Merge pull request #5346 from nicoddemus/improve-collect-warn-message

Show test module in the PytestCollectionWarning message
This commit is contained in:
Anthony Sottile
2019-05-30 10:27:52 -07:00
committed by GitHub
3 changed files with 24 additions and 3 deletions

View File

@@ -0,0 +1,2 @@
Show the test module being collected when emitting ``PytestCollectionWarning`` messages for
test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem.

View File

@@ -720,7 +720,8 @@ class Class(PyCollector):
self.warn(
PytestCollectionWarning(
"cannot collect test class %r because it has a "
"__init__ constructor" % self.obj.__name__
"__init__ constructor (from: %s)"
% (self.obj.__name__, self.parent.nodeid)
)
)
return []
@@ -728,7 +729,8 @@ class Class(PyCollector):
self.warn(
PytestCollectionWarning(
"cannot collect test class %r because it has a "
"__new__ constructor" % self.obj.__name__
"__new__ constructor (from: %s)"
% (self.obj.__name__, self.parent.nodeid)
)
)
return []

View File

@@ -146,7 +146,24 @@ class TestClass(object):
result = testdir.runpytest("-rw")
result.stdout.fnmatch_lines(
[
"*cannot collect test class 'TestClass1' because it has a __init__ constructor"
"*cannot collect test class 'TestClass1' because it has "
"a __init__ constructor (from: test_class_with_init_warning.py)"
]
)
def test_class_with_new_warning(self, testdir):
testdir.makepyfile(
"""
class TestClass1(object):
def __new__(self):
pass
"""
)
result = testdir.runpytest("-rw")
result.stdout.fnmatch_lines(
[
"*cannot collect test class 'TestClass1' because it has "
"a __new__ constructor (from: test_class_with_new_warning.py)"
]
)