Ada*_*tan 6 python bdd python-behave
我刚刚开始使用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)
如何创建通用步骤文件并导入它?
小智 5
仅适用于所有那些(像我一样)试图导入单步定义的人:不要!
只需导入整个模块。
对于所有仍然需要更多细节的人(比如我......):
如果您的项目结构如下所示:
foo/bar.py
foo/behave/steps/bar_steps.py
foo/behave/bar.feature
foo/common_steps/baz.py
Run Code Online (Sandbox Code Playgroud)
做就是了
import foo.common_steps.baz
Run Code Online (Sandbox Code Playgroud)
在 foo/behave/steps/bar_steps.py (这是您的常规步骤文件)
在导入的文件中,then必须导入行为装饰器(如 ):
from behave import then
from nose.tools import assert_equals
@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))
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4130 次 |
| 最近记录: |