You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The following test will pass in pytest=8.0.2, pytest-bdd=7.2.1, but will fail in pytest=8.1.0, pytest-bdd=7.2.1.
@given(parsers.parse('the value {value:d}'), target_fixture='x')
def step(value):
return value
@when(parsers.parse('multiplied by {value:d}'), target_fixture='result')
def step(x, value):
return x * value
@then(parsers.parse('the result should be {value:d}'))
def step(result, value):
assert result == value
Scenario: Multiply
Given the value 7
When multiplied by 7
Then the result should be 49
When multiplied by 3
Then the result should be 27
result = 49, value = 27
@then(parsers.parse('the result should be {value:d}'))
def step(result, value):
> assert result == value
E assert 49 == 27
test_multiply.py:26: AssertionError
It seems like the target fixture values are chached and the when step is not executed again.
The text was updated successfully, but these errors were encountered:
I also setup an example to report the issue and stumbled upon this one.
Feature: Numbers
Scenario: Increment
Given the number "1"
And the number is "1"
When the number is incremented
Then the number is "2"
frompytest_bddimportgiven, parsers, scenario, then, when@scenario("numbers.feature", "Increment")deftest_increment():
pass@given(parsers.parse('the number "{value:d}"'), target_fixture="number")defthe_number(value):
returnvalue@when("the number is incremented", target_fixture="number")defthe_number_is_changed_to(number):
number+=1returnnumber@given(parsers.parse('the number is "{expected_value:d}"'))@then(parsers.parse('the number is "{expected_value:d}"'))defthe_number_is(expected_value, number):
assertexpected_value==number
While And the number is "1" is fine the Then the number is "2" step feiles since the target fixture number is not correctly updated.
Confirming that pytest == 8.0.2 still works. Thanks @chrcoen for this important detail.
The following test will pass in pytest=8.0.2, pytest-bdd=7.2.1, but will fail in pytest=8.1.0, pytest-bdd=7.2.1.
It seems like the target fixture values are chached and the when step is not executed again.
The text was updated successfully, but these errors were encountered: