我有一个功能使用其他两个功能,如下所示:
When call read(ser.getCarList) headers
When call read(ser.getTaxes) headers
Run Code Online (Sandbox Code Playgroud)
所以第一个特征 getCarList 有两个验证
When method Get
* configure continueOnStepFailure = true
Then status 200
And match response = read ('this:getCarAssertion')
* configure continueOnStepFailure = true
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 new 关键字,但是当我收到状态代码 200 但响应错误时,下一个功能 getTaxes 不会继续执行
小智 5
这continueOnStepFailure是一个新关键字,旨在验证结果时使用,并且不会在第一次失败时立即失败。目的是为了断言或验证,以便在断言测试结果时可以验证尽可能多的信息。
为了避免将其用作多个步骤的纯 if 条件(产生意外后果),默认行为* configure continueOnStepFailure = true只会在步骤中发生失败时继续执行match,并且一旦禁用该机制,* configure continueOnStepFailure = false测试就会失败(但仍然提供continueOnStepFailure块内每个步骤的详细信息)。这是因为match是任何类型验证的推荐关键字,也是您如何利用强大的 JSON 断言库等的方式。
还建议在关键字* configure continueOnStepFailure = false集之后进行显式设置match,以便在失败后有意识地决定继续评估关键字后不会出现意外行为。
continueOnStepFailure话虽这么说,有一些方法可以扩展和配置超出默认行为的行为。该关键字还接受 JSON 输入,而不是布尔值,这允许更多的可扩展性。例如,关键字的默认行为可以表示如下:
* configure continueOnStepFailure = { enabled: true, continueAfter: false, keywords: ['match'] }
这意味着该continueOnStepFailure机制将被启用,禁用该机制后场景执行将不会继续,并且仅接受关键字中发生的失败match。请注意,如果您设置continueAfter为 true,场景将继续执行其余步骤,但场景本身仍将被标记为失败(报告中包含适当的输出以及该场景的任何调用者的典型失败行为)。我非常不鼓励设置continueAfter为 true。
对于您的特定用例,status关键字绝对在我描述的断言的范围内。status 200只是 的快捷方式match responseStatus == 200。考虑到这是一个匹配断言,我们很可能应该将状态添加到默认行为中。通过 JSON 中的扩展配置,您可以针对您的用例执行以下操作:
When method Get
And configure continueOnStepFailure = { enabled: true, continueAfter: false, keywords: ['match', 'status'] }
Then status 200
And match response = read ('this:getCarAssertion')
And configure continueOnStepFailure = false
Run Code Online (Sandbox Code Playgroud)
可以在此拉取请求的单元测试中找到一些其他示例。为了快速参考,您的空手道测试报告如下所示:
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |