def fixture_func(request, fixture_func_name): def func(a, b, c, d): pass use_function_name = request.param if use_function_name: func.__name__ = fixture_func_name return slash.fixture(func) return slash.fixture(name=fixture_func_name)(func)
def test_fixture_decorator(): def func(a, b, c): pass assert not hasattr(func, '__slash_fixture__') assert slash.fixture(func) is func assert func.__slash_fixture__ is not None # pylint: disable=no-member
def test_fixture_decorator(): def func(a, b, c): pass assert not hasattr(func, '__slash_fixture__') assert slash.fixture(func) is func assert func.__slash_fixture__ is not None
def test_parametrized_fixture(store): _fixture = lambda f: store.add_fixture(slash.fixture(f)) @_fixture @slash.parametrize('a', [1, 2, 3]) @slash.parametrize('b', [4, 5, 6]) def fixture(a, b): pass store.resolve()
def _construct_fixture(self, name, scope, dependent_names): buff = StringIO() code = CodeFormatter(buff) code.writeln('def {}(this, {}):'.format(name, ', '.join(dependent_names))) with code.indented(): for dependent_name in dependent_names: code.writeln( 'tree.check_value({0!r}, {0})'.format(dependent_name)) code.writeln('@this.add_cleanup') code.writeln('def cleanup():') with code.indented(): code.writeln('tree.cleanup({!r})'.format(name)) code.writeln('return tree.make_value({!r})'.format(name)) globs = {'tree': self} exec(buff.getvalue(), globs) # pylint: disable=exec-used return slash.fixture(scope=scope)(globs[name])
def _construct_fixture(self, name, scope, dependent_names): buff = StringIO() code = CodeFormatter(buff) code.writeln( 'def {0}(this, {1}):'.format(name, ', '.join(dependent_names))) with code.indented(): for dependent_name in dependent_names: code.writeln( 'tree.check_value({0!r}, {0})'.format(dependent_name)) code.writeln('@this.add_cleanup') code.writeln('def cleanup():') with code.indented(): code.writeln('tree.cleanup({0!r})'.format(name)) code.writeln('return tree.make_value({0!r})'.format(name)) globs = {'tree': self} exec(buff.getvalue(), globs) return slash.fixture(scope=scope)(globs[name])
def test_fixture_initialization_order_is_preserved(store): _fixture = lambda f: store.add_fixture(slash.fixture(f)) generation = itertools.count(1) @_fixture def fixture1(): return next(generation) @_fixture def fixture2(): return next(generation) @_fixture def fixture3(): return next(generation) store.resolve() d = store.get_fixture_dict(['fixture1', 'fixture2', 'fixture3']) for i in [1, 2, 3]: assert d['fixture{0}'.format(i)] == i
def generate_session_and_test(permutation): s = slash.Session() if on_fixture: @parametrize(permutation) def some_fixture(a, b, c): return {'a': a, 'b': b, 'c': c} def test_something(some_fixture): slash.context.result.data['params'] = some_fixture else: @parametrize(permutation) def test_something(a, b, c): slash.context.result.data['params'] = {'a': a, 'b': b, 'c': c} if on_fixture: s.fixture_store.add_fixture(slash.fixture(some_fixture)) s.fixture_store.resolve() return s, test_something
def test_fixture_decorator_multiple_calls(fixture_func): fixture_info = fixture_func.__slash_fixture__ assert slash.fixture(slash.fixture(fixture_func)) is fixture_func assert fixture_func.__slash_fixture__ is fixture_info