fixes given reuse

This commit is contained in:
Oleg Podsadny 2013-06-20 09:31:02 +02:00
parent cab7b85872
commit 9247951600
4 changed files with 40 additions and 3 deletions

View File

@ -56,8 +56,8 @@ def given(name, fixture=None):
name = remove_prefix(name)
if fixture is not None:
module = get_caller_module()
func = getattr(module, fixture, lambda request: request.getfuncargvalue(fixture))
setattr(module, name, pytest.fixture(lambda: func))
func = lambda: lambda request: request.getfuncargvalue(fixture)
setattr(module, name, pytest.fixture(func))
return _not_a_fixture_decorator
return _step_decorator(GIVEN, name)

View File

@ -101,7 +101,7 @@ setup(
license='MIT license',
author_email='oleg.podsadny@gmail.com',
url='https://github.com/olegpidsadnyi/pytest-bdd',
version='0.4.3',
version='0.4.4',
classifiers=[
'Development Status :: 6 - Mature',
'Intended Audience :: Developers',

View File

@ -0,0 +1,6 @@
Scenario: Given and when using the same fixture should not evaluate it twice
Given I have an empty list
And I have a fixture (appends 1 to a list)
And I have a fixture (appends 1 to a list) in reuse syntax
When I use this fixture
Then my list should be [1]

View File

@ -0,0 +1,31 @@
from pytest_bdd.steps import when
from pytest_bdd import given, then, scenario
test_reuse = scenario(
'reuse.feature',
'Given and when using the same fixture should not evaluate it twice',
)
@given('I have an empty list')
def empty_list():
return []
@given('I have a fixture (appends 1 to a list)')
def appends_1(empty_list):
empty_list.append(1)
return empty_list
given('I have a fixture (appends 1 to a list) in reuse syntax', fixture='appends_1')
@when('I use this fixture')
def use_fixture(appends_1):
pass
@then('my list should be [1]')
def list_should_be_1(appends_1):
assert appends_1 == [1]