Merge pull request #5798 from aklajnert/570-indirect-fixtures

Fix the scope behavior with indirect fixtures
This commit is contained in:
Bruno Oliveira
2019-08-30 12:29:03 -03:00
committed by GitHub
4 changed files with 62 additions and 3 deletions

View File

@@ -859,7 +859,7 @@ class FixtureDef:
if argname != "request":
fixturedef.addfinalizer(functools.partial(self.finish, request=request))
my_cache_key = request.param_index
my_cache_key = self.cache_key(request)
cached_result = getattr(self, "cached_result", None)
if cached_result is not None:
result, cache_key, err = cached_result
@@ -877,6 +877,9 @@ class FixtureDef:
hook = self._fixturemanager.session.gethookproxy(request.node.fspath)
return hook.pytest_fixture_setup(fixturedef=self, request=request)
def cache_key(self, request):
return request.param_index if not hasattr(request, "param") else request.param
def __repr__(self):
return "<FixtureDef argname={!r} scope={!r} baseid={!r}>".format(
self.argname, self.scope, self.baseid
@@ -913,7 +916,7 @@ def pytest_fixture_setup(fixturedef, request):
kwargs[argname] = result
fixturefunc = resolve_fixture_function(fixturedef, request)
my_cache_key = request.param_index
my_cache_key = fixturedef.cache_key(request)
try:
result = call_fixture_func(fixturefunc, request, kwargs)
except TEST_OUTCOME: