summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandros Tzannes <atzannes@users.noreply.github.com>2021-03-04 15:45:57 -0500
committerGitHub <noreply@github.com>2021-03-04 22:45:57 +0200
commit19a2f7425ddec3b614da7c915e0cf8bb24b6906f (patch)
tree8020081774269ba42fec123316b0171f500ae24b
parent6e7dc8bac831cd8cf7a53b08efa366bd84f0c0fe (diff)
downloadpytest-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.rst1
-rw-r--r--src/_pytest/python.py8
-rw-r--r--src/_pytest/unittest.py2
-rw-r--r--testing/test_nose.py44
-rw-r--r--testing/test_unittest.py24
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(
"""