diff options
author | Alexandros Tzannes <atzannes@users.noreply.github.com> | 2021-03-04 15:45:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-04 22:45:57 +0200 |
commit | 19a2f7425ddec3b614da7c915e0cf8bb24b6906f (patch) | |
tree | 8020081774269ba42fec123316b0171f500ae24b | |
parent | 6e7dc8bac831cd8cf7a53b08efa366bd84f0c0fe (diff) | |
download | pytest-19a2f7425ddec3b614da7c915e0cf8bb24b6906f.tar.gz |
Merge pull request #8399 from atzannes/master
closes #8394
Generated fixture names for unittest/xunit/nose should start with underscore
-rw-r--r-- | changelog/8394.bugfix.rst | 1 | ||||
-rw-r--r-- | src/_pytest/python.py | 8 | ||||
-rw-r--r-- | src/_pytest/unittest.py | 2 | ||||
-rw-r--r-- | testing/test_nose.py | 44 | ||||
-rw-r--r-- | testing/test_unittest.py | 24 |
5 files changed, 74 insertions, 5 deletions
diff --git a/changelog/8394.bugfix.rst b/changelog/8394.bugfix.rst new file mode 100644 index 000000000..a0fb5bb71 --- /dev/null +++ b/changelog/8394.bugfix.rst @@ -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``). diff --git a/src/_pytest/python.py b/src/_pytest/python.py index 40116ab9c..c19d2ed4f 100644 --- a/src/_pytest/python.py +++ b/src/_pytest/python.py @@ -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 diff --git a/src/_pytest/unittest.py b/src/_pytest/unittest.py index 719eb4e88..3f88d7a9e 100644 --- a/src/_pytest/unittest.py +++ b/src/_pytest/unittest.py @@ -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): diff --git a/testing/test_nose.py b/testing/test_nose.py index 13429afaf..77f79b53b 100644 --- a/testing/test_nose.py +++ b/testing/test_nose.py @@ -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( """ diff --git a/testing/test_unittest.py b/testing/test_unittest.py index 69bafc26d..d7f773715 100644 --- a/testing/test_unittest.py +++ b/testing/test_unittest.py @@ -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( """ |