我刚刚开始使用behave,一个使用Gherkin 语法的Pythonic BDD 框架。行为需要一个功能,例如:
Scenario: Calling the metadata API
Given A matching server
When I call metadata
Then metadata response is JSON
And response status code is 200
Run Code Online (Sandbox Code Playgroud)
还有一个步骤文件,例如:
...
@then('response status code is {expected_status_code}')
def step_impl(context, expected_status_code):
assert_equals(context.response.status_code, int(expected_status_code))
@then('metadata response is JSON')
def step_impl(context):
json.loads(context.metadata_response.data)
...
Run Code Online (Sandbox Code Playgroud)
并将它们组合成一个漂亮的测试报告:

其中一些步骤 - 例如:
metadata response is JSONresponse status code is {expected_status_code} 在我的许多项目中使用,我想将它们分组到一个通用步骤文件中,我可以导入和重用该文件。
我尝试将有用的步骤提取到单独的文件中并将其导入,但收到以下错误:
@then('response status code is {expected_status_code}')
NameError: name 'then' is not defined
Run Code Online (Sandbox Code Playgroud)
如何创建通用步骤文件并导入它?