空手道如何仅在失败的情况下自动重新运行

时间:2020-09-10 15:01:56

标签: karate

空手道有没有办法以相同的执行方式自动重新运行UI测试自动化的失败方案(甚至在API中也是如此)。我正在使用gradle作为构建工具。 这是我的要求,如果任何测试失败,则应再次重试。

如果在每种功能场景之后我们都可以跳过stop(),那么也是任何方法。并且只能在功能之后调用。这样单个驱动程序实例将适用于在一个功能文件中编写的所有方案。

请提出建议。

1 个答案:

答案 0 :(得分:4)

当前不支持此功能。它可能存在于下一版本中,但不能保证。有些人认为重试是不好的测试习惯,请仔细检查。

但是这是一个可能的解决方法。如果您可以将“不稳定的流程”移至某个功能(应该已经存在)中,则可以通过“包装功能”和一个JS函数进行调用。可以对其进行增强,以轻松地为该功能调用参数以及重试次数。在这里,我们利用JS try-catch块。

* def fun =
"""
function() {
  for (var i = 0; i < 3; i++) {
    try {
      karate.call('flaky.feature');
      karate.log('*** call success !')
      return;
    } catch (e) {
      karate.log('try failed:', i, e);
    }
  }
  karate.fail('test failed after retries: ' + i); // karate.fail('message') is only in 0.9.6 onwards, you can also [throw 'message']
}
"""
* fun()

除非它是Scenario功能,否则我们不支持在多个called-s中重用驱动程序。在此处查看评论:callSingle for login in karate-config.js does not work as expected for Karate UI tests

请记住,空手道是开源的。如果这些是您的优先级高的功能,请考虑提供代码。