编程语言
首页 > 编程语言> > python – Behave:如何从另一个文件导入步骤?

python – Behave:如何从另一个文件导入步骤?

作者:互联网

我刚开始使用behave,一个使用Gherkin syntax的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

和步骤文件,例如:

...
@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)
...

并将它们组合成一个美丽的测试报告:

其中一些步骤 – 如:

>元数据响应是JSON
>响应状态代码为{expected_status_code}

在我的许多项目中使用,我想将它们分组为一个常规步骤文件,我可以导入和重用.

我尝试将有用的步骤提取到单独的文件并导入它,但收到以下错误:

@then('response status code is {expected_status_code}')
NameError: name 'then' is not defined

如何创建通用步骤文件并导入它?

解决方法:

在导入的文件中,必须导入行为装饰器(如此):

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))

...

标签:python,bdd,python-behave
来源: https://codeday.me/bug/20190624/1280241.html