def test_marked_one_arg_unicode(self, testdir): item = testdir.getitem(""" import pytest @pytest.mark.xyz(u"hasattr(os, 'sep')") def test_func(): pass """) ev = MarkEvaluator(item, "xyz") assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: hasattr(os, 'sep')"
def pytest_collection_modifyitems(self, session, config, items): """Handle skipif condition and remove skipped tests from test run. """ self.items_count = len(items) # pylint: disable=attribute-defined-outside-init self.reasons = set() # pylint: disable=attribute-defined-outside-init for item in items[:]: evalskip = MarkEvaluator(item, 'skipif') if evalskip.istrue(): self.reasons.add(evalskip.getexplanation()) items.remove(item) self.filtered_count = len(items) # pylint: disable=attribute-defined-outside-init
def test_marked_one_arg_unicode(self, testdir): item = testdir.getitem(""" import pytest @pytest.mark.xyz(u"hasattr(os, 'sep')") def test_func(): pass """) ev = MarkEvaluator(item, 'xyz') assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: hasattr(os, 'sep')"
def test_marked_one_arg_with_reason(self, testdir): item = testdir.getitem(""" import pytest @pytest.mark.xyz("hasattr(os, 'sep')", attr=2, reason="hello world") def test_func(): pass """) ev = MarkEvaluator(item, 'xyz') assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "hello world" assert ev.get("attr") == 2
def test_marked_no_args(self, testdir): item = testdir.getitem(""" import pytest @pytest.mark.xyz def test_func(): pass """) ev = MarkEvaluator(item, 'xyz') assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "" assert not ev.get("run", False)
def test_skipif_class(self, testdir): item, = testdir.getitems(""" import pytest class TestClass: pytestmark = pytest.mark.skipif("config._hackxyz") def test_func(self): pass """) item.config._hackxyz = 3 ev = MarkEvaluator(item, 'skipif') assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: config._hackxyz"
def test_marked_one_arg_twice2(self, testdir): item = testdir.getitem(""" import pytest @pytest.mark.skipif("hasattr(os, 'murks')") @pytest.mark.skipif("not hasattr(os, 'murks')") def test_func(): pass """) ev = MarkEvaluator(item, 'skipif') assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: not hasattr(os, 'murks')"
def test_skipif_class(self, testdir): item, = testdir.getitems(""" import pytest class TestClass(object): pytestmark = pytest.mark.skipif("config._hackxyz") def test_func(self): pass """) item.config._hackxyz = 3 ev = MarkEvaluator(item, 'skipif') assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: config._hackxyz"
def pytest_runtest_setup(item): skip_until_info = item.get_closest_marker('skip_until') if isinstance(skip_until_info, Mark): # If the date parameter is used, it will take precedence if "date" in skip_until_info.kwargs and isinstance( skip_until_info.kwargs["date"], datetime): skip_until_info.kwargs["condition"] = datetime.utcnow( ) >= skip_until_info.kwargs['date'] eval_skip_until = MarkEvaluator(item, 'skip_until') skip_until_info.kwargs.get("condition", None) item._evalskipuntil = eval_skip_until if not eval_skip_until.istrue(): pytest.skip(eval_skip_until.getexplanation())
def test_marked_one_arg_twice(self, testdir): lines = [ '''@pytest.mark.skipif("not hasattr(os, 'murks')")''', '''@pytest.mark.skipif("hasattr(os, 'murks')")''' ] for i in range(0, 2): item = testdir.getitem(""" import pytest %s %s def test_func(): pass """ % (lines[i], lines[(i + 1) % 2])) ev = MarkEvaluator(item, 'skipif') assert ev assert ev.istrue() expl = ev.getexplanation() assert expl == "condition: not hasattr(os, 'murks')"
def pytest_runtest_setup(item): # Check if block or blockif are specified as pytest marks blockif_info = item.get_marker('blockif') if blockif_info is not None: eval_blockif = MarkEvaluator(item, 'blockif') if eval_blockif.istrue(): item._evalblock = eval_blockif pytest.block(eval_blockif.getexplanation()) block_info = item.get_marker('block') if isinstance(block_info, (MarkInfo, MarkDecorator)): item._evalblock = True if 'reason' in block_info.kwargs: block(block_info.kwargs['reason']) elif block_info.args: block(block_info.args[0]) else: block("unconditional skip")
def test_no_marker(self, testdir): item = testdir.getitem("def test_func(): pass") evalskipif = MarkEvaluator(item, 'skipif') assert not evalskipif assert not evalskipif.istrue()