diff --git a/_pytest/python.py b/_pytest/python.py index 06f74ce4b8a..1b4aeecedeb 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -615,7 +615,7 @@ def collect(self): raise ValueError("%r generated tests with non-unique name %r" %(self, name)) seen[name] = True l.append(self.Function(name, self, args=args, callobj=call)) - self.config.warn('C1', deprecated.YIELD_TESTS, fslocation=self.fspath) + self.warn('C1', deprecated.YIELD_TESTS) return l def getcallargs(self, obj): diff --git a/changelog/2562.trivial b/changelog/2562.trivial new file mode 100644 index 00000000000..605c7cf7400 --- /dev/null +++ b/changelog/2562.trivial @@ -0,0 +1 @@ +Emit yield test warning only once per generator diff --git a/testing/deprecated_test.py b/testing/deprecated_test.py index 0c41a71bf73..a59ad128be7 100644 --- a/testing/deprecated_test.py +++ b/testing/deprecated_test.py @@ -9,12 +9,16 @@ def func1(arg, arg2): def test_gen(): yield "m1", func1, 15, 3*5 yield "m2", func1, 42, 6*7 + def test_gen2(): + for k in range(10): + yield func1, 1, 1 """) result = testdir.runpytest('-ra') result.stdout.fnmatch_lines([ '*yield tests are deprecated, and scheduled to be removed in pytest 4.0*', '*2 passed*', ]) + assert result.stdout.str().count('yield tests are deprecated') == 2 def test_funcarg_prefix_deprecation(testdir):