支持多行的 step
steps.feature
Feature: Multiline steps
Scenario: Multiline step using sub indentation
Given I have a step with:
Some
Extra
Lines
Then the text should be parsed with correct indentation
如果后面几行相对于 step 的第一行有缩进,那么就可以认为这个 step 有多行
tips:pycharm 对于这种换行会爆红,忽略即可
Given I have a step with:
Some
Extra
Lines
那么这个 given step 的名字就会为:'I have a step with:\nSome\nExtra\nLines'
test_steps.py
from pytest_bdd import given, then, parsers, scenarios
scenarios('steps.feature')
@given(parsers.parse("I have a step with:\n{text}"), target_fixture="i_have_text")
def i_have_text(text):
return text
@then("the text should be parsed with correct indentation")
def text_should_be_correct(i_have_text, text):
print(i_have_text)
print(text)
assert i_have_text == text == 'Some\nExtra\nLines'
命令行运行
pytest -sq test_steps.py
运行结果
Some
Extra
Lines
Some
Extra
Lines
.
1 passed in 0.01s
补充一个重点
@when、@then 可以直接使用 @given 中的步骤参数
# 比如这里的 text 就是上面 @given 的步骤参数 {text} 的名字
@then("the text should be parsed with correct indentation")
def text_should_be_correct(i_have_text, text):