Show test module in the PytestCollectionWarning message

Related to #5330
This commit is contained in:
Bruno Oliveira 2019-05-30 08:18:28 -03:00
parent 72fc43952b
commit 5cbc06a453
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)"
]
)