support nose-style `__test__` attribute on modules, classes and

functions, including unittest-style Classes.  If set to True, the
test will not be collected.

--HG--
branch : nose_test_attr
This commit is contained in:
holger krekel
2014-04-10 12:46:27 +02:00
parent f91049cec9
commit 494be731e3
5 changed files with 62 additions and 5 deletions

View File

@@ -164,20 +164,21 @@ class TestMockDecoration:
names = [x.nodeid.split("::")[-1] for x in calls]
assert names == ["test_one", "test_two", "test_three"]
def test_mock_double_patch_issue473(self, testdir):
def test_mock_and_mark_issue473(self, testdir):
pytest.importorskip("mock", "1.0.1")
testdir.makepyfile("""
from mock import patch
from pytest import mark
@patch('os.getcwd')
@patch('os.path')
@mark.slow
#@mark.slow
class TestSimple:
def test_simple_thing(self, mock_path, mock_getcwd):
pass
""")
res = testdir.inline_run()
res.assertoutcome(passed=1)
reprec = testdir.inline_run()
reprec.assertoutcome(passed=1)
class TestReRunTests:
@@ -214,3 +215,49 @@ class TestReRunTests:
def test_pytestconfig_is_session_scoped():
from _pytest.python import pytestconfig
assert pytestconfig._pytestfixturefunction.scope == "session"
class TestNoselikeTestAttribute:
def test_module(self, testdir):
testdir.makepyfile("""
__test__ = False
def test_hello():
pass
""")
reprec = testdir.inline_run()
calls = reprec.getreports("pytest_runtest_logreport")
assert not calls
def test_class_and_method(self, testdir):
testdir.makepyfile("""
__test__ = True
def test_func():
pass
test_hello.__test__ = False
class TestSome:
__test__ = False
def test_method(self):
pass
""")
reprec = testdir.inline_run()
calls = reprec.getreports("pytest_runtest_logreport")
assert not calls
def test_unittest_class(self, testdir):
testdir.makepyfile("""
import unittest
class TC(unittest.TestCase):
def test_1(self):
pass
class TC2(unittest.TestCase):
__test__ = False
def test_2(self):
pass
""")
reprec = testdir.inline_run()
call = reprec.getcalls("pytest_collection_modifyitems")[0]
assert len(call.items) == 1
assert call.items[0].cls.__name__ == "TC"