diff --git a/_pytest/fixtures.py b/_pytest/fixtures.py index 7b109ec11..6617c24a2 100644 --- a/_pytest/fixtures.py +++ b/_pytest/fixtures.py @@ -984,7 +984,7 @@ class FixtureManager(object): session.config.pluginmanager.register(self, "funcmanage") def getfixtureinfo(self, node, func, cls, funcargs=True): - if funcargs and not hasattr(node, "nofuncargs"): + if funcargs and not getattr(node, "nofuncargs", False): argnames = getfuncargnames(func, cls=cls) else: argnames = () diff --git a/_pytest/python.py b/_pytest/python.py index 8bcb051a2..2b37067d5 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1155,7 +1155,7 @@ class Function(FunctionMixin, nodes.Item, fixtures.FuncargnamesCompatAttr): if fixtureinfo is None: fixtureinfo = self.session._fixturemanager.getfixtureinfo( - self.parent, self.obj, self.cls, + self, self.obj, self.cls, funcargs=not self._isyieldedfunction()) self._fixtureinfo = fixtureinfo self.fixturenames = fixtureinfo.names_closure diff --git a/_pytest/unittest.py b/_pytest/unittest.py index 3ddb39495..17c94bca4 100644 --- a/_pytest/unittest.py +++ b/_pytest/unittest.py @@ -54,7 +54,7 @@ class UnitTestCase(Class): continue funcobj = getattr(x, 'im_func', x) transfer_markers(funcobj, cls, module) - yield TestCaseFunction(name, parent=self) + yield TestCaseFunction(name, parent=self, callobj=funcobj) foundsomething = True if not foundsomething: @@ -66,6 +66,7 @@ class UnitTestCase(Class): class TestCaseFunction(Function): + nofuncargs = True _excinfo = None def setup(self): diff --git a/changelog/3498.bugfix b/changelog/3498.bugfix new file mode 100644 index 000000000..7260879c4 --- /dev/null +++ b/changelog/3498.bugfix @@ -0,0 +1 @@ +correctly instantiate fixtureinfo for unittest tests. \ No newline at end of file