即使断言/匹配之一失败,是否可以继续执行测试步骤?
Ex:
Scenario: Testing
* def detail = {"a":{"data":[{"message":["push","dash"]},{"message":["data","Test"]}]}}
* match detail contains {"a":{"data":[{"message":["push","dash"]}]}}
* print detail
Run Code Online (Sandbox Code Playgroud)
这里匹配将会失败,但执行会在此时停止。有没有办法进行软断言以便执行下一步?
2021 年编辑 - Joel Ramos在此处continueOnStepFailure贡献了引入旗帜的 PR ,并且在空手道 1.0 及以上版本中可用。您可以在这里找到更多详细信息:/sf/answers/4671334741/
如果您使用Scenario Outline每个“行”,即使其中一个失败,也会执行。
Scenario Outline: Testing
* def detail = { a: 1, b: 2, c: 3 }
* match detail contains <expected>
Examples:
| expected |
| { a: 1 } |
| { b: 2 } |
| { c: 3 } |
Run Code Online (Sandbox Code Playgroud)
请注意,“软断言”的概念是有争议的,有些人认为这是一种不好的做法:
a) https://softwareengineering.stackexchange.com/q/7823
b) https://martinfowler.com/articles/nonDeterminism.html
对于那些寻找显示 2 个 JSON 对象之间所有不匹配的方法的人,请参阅: https: //stackoverflow.com/a/61349887/143475
最后,由于有些人想在 JS 中执行“条件”匹配逻辑,请参阅此答案: https: //stackoverflow.com/a/50350442/143475