Merge pull request #8399 from atzannes/master

closes #8394

Generated fixture names for unittest/xunit/nose should start with underscore
This commit is contained in:
Alexandros Tzannes 2021-03-04 15:45:57 -05:00 committed by GitHub
parent 6e7dc8bac8
commit 19a2f7425d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 5 deletions

View File

@ -0,0 +1 @@
Use private names for internal fixtures that handle classic setup/teardown so that they don't show up with the default ``--fixtures`` invocation (but they still show up with ``--fixtures -v``).

View File

@ -528,7 +528,7 @@ class Module(nodes.File, PyCollector):
autouse=True,
scope="module",
# Use a unique name to speed up lookup.
name=f"xunit_setup_module_fixture_{self.obj.__name__}",
name=f"_xunit_setup_module_fixture_{self.obj.__name__}",
)
def xunit_setup_module_fixture(request) -> Generator[None, None, None]:
if setup_module is not None:
@ -557,7 +557,7 @@ class Module(nodes.File, PyCollector):
autouse=True,
scope="function",
# Use a unique name to speed up lookup.
name=f"xunit_setup_function_fixture_{self.obj.__name__}",
name=f"_xunit_setup_function_fixture_{self.obj.__name__}",
)
def xunit_setup_function_fixture(request) -> Generator[None, None, None]:
if request.instance is not None:
@ -809,7 +809,7 @@ class Class(PyCollector):
autouse=True,
scope="class",
# Use a unique name to speed up lookup.
name=f"xunit_setup_class_fixture_{self.obj.__qualname__}",
name=f"_xunit_setup_class_fixture_{self.obj.__qualname__}",
)
def xunit_setup_class_fixture(cls) -> Generator[None, None, None]:
if setup_class is not None:
@ -838,7 +838,7 @@ class Class(PyCollector):
autouse=True,
scope="function",
# Use a unique name to speed up lookup.
name=f"xunit_setup_method_fixture_{self.obj.__qualname__}",
name=f"_xunit_setup_method_fixture_{self.obj.__qualname__}",
)
def xunit_setup_method_fixture(self, request) -> Generator[None, None, None]:
method = request.function

View File

@ -144,7 +144,7 @@ def _make_xunit_fixture(
scope=scope,
autouse=True,
# Use a unique name to speed up lookup.
name=f"unittest_{setup_name}_fixture_{obj.__qualname__}",
name=f"_unittest_{setup_name}_fixture_{obj.__qualname__}",
)
def fixture(self, request: FixtureRequest) -> Generator[None, None, None]:
if _is_skipped(self):

View File

@ -211,6 +211,50 @@ def test_nose_style_setup_teardown(pytester: Pytester) -> None:
result.stdout.fnmatch_lines(["*2 passed*"])
def test_fixtures_nose_setup_issue8394(pytester: Pytester) -> None:
pytester.makepyfile(
"""
def setup_module():
pass
def teardown_module():
pass
def setup_function(func):
pass
def teardown_function(func):
pass
def test_world():
pass
class Test(object):
def setup_class(cls):
pass
def teardown_class(cls):
pass
def setup_method(self, meth):
pass
def teardown_method(self, meth):
pass
def test_method(self): pass
"""
)
match = "*no docstring available*"
result = pytester.runpytest("--fixtures")
assert result.ret == 0
result.stdout.no_fnmatch_line(match)
result = pytester.runpytest("--fixtures", "-v")
assert result.ret == 0
result.stdout.fnmatch_lines([match, match, match, match])
def test_nose_setup_ordering(pytester: Pytester) -> None:
pytester.makepyfile(
"""

View File

@ -302,6 +302,30 @@ def test_setup_setUpClass(pytester: Pytester) -> None:
reprec.assertoutcome(passed=3)
def test_fixtures_setup_setUpClass_issue8394(pytester: Pytester) -> None:
pytester.makepyfile(
"""
import unittest
class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
pass
def test_func1(self):
pass
@classmethod
def tearDownClass(cls):
pass
"""
)
result = pytester.runpytest("--fixtures")
assert result.ret == 0
result.stdout.no_fnmatch_line("*no docstring available*")
result = pytester.runpytest("--fixtures", "-v")
assert result.ret == 0
result.stdout.fnmatch_lines(["*no docstring available*"])
def test_setup_class(pytester: Pytester) -> None:
testpath = pytester.makepyfile(
"""