def __call__(self, f):
@wrapt.decorator
def test_with_fixtures(wrapped, instance, args, kwargs):
fixture_instances = [i for i in list(args) + list(kwargs.values())
if i.__class__ in self.fixture_classes or i.scenario in self.requested_fixtures]
dependency_ordered_fixtures = self.topological_sort_instances(fixture_instances)
if six.PY2:
with contextlib.nested(*list(dependency_ordered_fixtures)):
return wrapped(*args, **kwargs)
else:
with contextlib.ExitStack() as stack:
for fixture in dependency_ordered_fixtures:
stack.enter_context(fixture)
return wrapped(*args, **kwargs)
ff = test_with_fixtures(f)
arg_names = self.fixture_arg_names(ff)
return pytest.mark.parametrize(','.join(arg_names), self.fixture_permutations())(ff)
评论列表
文章目录