-
Notifications
You must be signed in to change notification settings - Fork 230
Closed
Description
from pytest_bdd import scenarios, parsers, given, when, then
from my_pytest_bdd.cucumbers import CucumberBasket
# Scenarios
CONVERTERS = {
'initial': int,
'some': int,
'total': int,
}
scenarios('../features')
# Given Steps
@given(parsers.parse('the basket has {initial:d} cucumbers'), target_fixture='basket')
def basket(initial):
return CucumberBasket(initial_count=initial)
@given(parsers.parse('the color is "green"'))
@given('the color is "green"')
def is_green(basket):
assert 'green' == 'green'
@given(parsers.parse('{some:d} {color} {size} cucumbers are added to the basket'))
def call_add_cucumber(basket, some, color, size):
print('parse GIVEN can calling call_add_cucumber()')
add_cucumbers(basket, some, color, size)
# When Steps
@when(parsers.parse('{some:d} {color} {size} cucumbers are added to the basket'))
@when(parsers.parse('{some:d} "{color}" "{size}" cucumbers are added to the basket'))
@when(parsers.parse('{some:d} "{color}" {size} cucumbers are added to the basket'))
@when(parsers.parse('{some:d} {color} "{size}" cucumbers are added to the basket'))
def add_cucumbers(basket, some, color, size):
print('parsing WHEN in add_cucumbers()')
print(f'some {some}')
print(f'color: {color}')
print(f'size: {size}')
assert color == 'green'
assert size == 'long'
basket.add(some)
@when(parsers.parse('{some:d} cucumbers are removed from the basket'))
def remove_cucumbers(basket, some):
basket.remove(some)
# Then Steps
@then(parsers.parse('the basket contains {total:d} cucumbers'))
def basket_has_total(basket, total):
assert basket.count == total@cucumber-basket @basket @add
Feature: Cucumber Basket with Outlines
As a gardener,
I want to carry multiples of cucumbers in a basket,
So that I don't drop any of them.
@add_good
Scenario Outline: Add cucumbers to a basket 1
Given the basket has <initial> cucumbers
And the color is "green"
When <some> "green" "long" cucumbers are added to the basket
Then the basket contains <total> cucumbers
Examples:
| initial | some | total |
| 0 | 3 | 3 |
@add_bad
Scenario Outline: Add cucumbers to a basket 2
Given the basket has <initial> cucumbers
And <some> <color> long cucumbers are added to the basket
When <some> "green" "long" cucumbers are added to the basket
And <some> "green" long cucumbers are added to the basket
Then the basket contains <total> cucumbers
Examples:
| initial | some | color | total |
| 0 | 2 | green | 6 |$ pytest -vv -s -m add_good
basket = <my_pytest_bdd.cucumbers.CucumberBasket object at 0x00000250F5393688>, some = 3, color = '"green"', size = '"long"'
@when(parsers.parse('{some:d} {color} {size} cucumbers are added to the basket'))
@when(parsers.parse('{some:d} "{color}" "{size}" cucumbers are added to the basket'))
@when(parsers.parse('{some:d} "{color}" {size} cucumbers are added to the basket'))
@when(parsers.parse('{some:d} {color} "{size}" cucumbers are added to the basket'))
def add_cucumbers(basket, some, color, size):
print('parsing WHEN in add_cucumbers()')
print(f'some {some}')
print(f'color: {color}')
print(f'size: {size}')
> assert color == 'green'
E assert '"green"' == 'green'
E - green
E + "green"
E ? + +
cucumber\steps\test_cucumber_steps.py:53: AssertionError
If comment out @given(parsers.parse('{some:d} {color} {size} cucumbers are added to the basket')) then running test for -m add_good passes and causes -m add_bad to fail:
E pytest_bdd.exceptions.StepDefinitionNotFoundError: Step definition is not found: Given "2 green long cucumbers are added to the basket". Line 21 in scenario "Add cucumbers to a basket 2" in the feature "C:\Users\valorosc\Documents\MyPython\my_pytest_bdd\cucumber\features\cucumbers_add.feature"
Changing given step to:
@given(parsers.parse('{some:d} {hue} {length} cucumbers are added to the basket'))
def call_add_cucumber(basket, some, hue, length):
print('parse GIVEN can calling call_add_cucumber()')
add_cucumbers(basket, some, hue, length)Both add_good and add_bad pass.
Looks like value for argument is getting from given instead of when step.
Metadata
Metadata
Assignees
Labels
No labels