Ejemplo n.º 1
0
 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')"
Ejemplo n.º 2
0
 def test_marked_one_arg(self, testdir):
     item = testdir.getitem("""
         import pytest
         @pytest.mark.xyz("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')"
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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"
Ejemplo n.º 5
0
 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')"
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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')"
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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())
Ejemplo n.º 13
0
 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')"
Ejemplo n.º 14
0
 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')"
Ejemplo n.º 15
0
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")