Karate 空手道如何仅自动重新运行失败的场景

Karate 空手道如何仅自动重新运行失败的场景,karate,Karate,在空手道中,是否有任何方法可以在相同的执行中自动地重新运行UI测试自动化(甚至在API中)的失败场景。我使用gradle作为构建工具。 这是我这边的要求,如果任何测试失败,它应该再次重试 另外,如果我们可以在每个功能场景之后跳过stop(),也可以这样做。而且它只能在feature之后调用。因此,单个驱动程序实例将适用于在一个功能文件中编写的所有场景 请建议。目前不支持此操作。下一个版本中可能会有,但没有保证。有些人认为重尝试是坏的测试实践,查一下。 但这里有一个可能的解决办法。如果您可以将“片

在空手道中,是否有任何方法可以在相同的执行中自动地重新运行UI测试自动化(甚至在API中)的失败场景。我使用gradle作为构建工具。 这是我这边的要求,如果任何测试失败,它应该再次重试

另外,如果我们可以在每个功能场景之后跳过stop(),也可以这样做。而且它只能在feature之后调用。因此,单个驱动程序实例将适用于在一个功能文件中编写的所有场景


请建议。

目前不支持此操作。下一个版本中可能会有,但没有保证。有些人认为重尝试是坏的测试实践,查一下。

但这里有一个可能的解决办法。如果您可以将“片状流”移动到一个功能中(应该已经是这样),那么您可以通过“包装器功能”和JS函数调用它。可以对其进行增强,以便轻松获取要调用的功能的参数和重试次数。这里我们使用jstry-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()
*def fun=
"""
函数(){
对于(变量i=0;i<3;i++){
试一试{
空手道呼叫(“片状特征”);
karate.log(“***呼叫成功!”)
回来
}捕获(e){
log('try failed:',即e);
}
}
karate.fail('重试后测试失败:'+i);//karate.fail('message')仅在0.9.6以后版本中,您还可以[抛出'message']
}
"""
*乐趣
我们不支持在多个
场景中重复使用驱动程序,除非它是一个名为
功能。请参见此处的评论:

记住,空手道是开源的。请考虑贡献代码,如果这些是你的高优先级特性。


编辑-另请参见:

当前不支持此操作。下一个版本中可能会有,但没有保证。有些人认为重尝试是坏的测试实践,查一下。

但这里有一个可能的解决办法。如果您可以将“片状流”移动到一个功能中(应该已经是这样),那么您可以通过“包装器功能”和JS函数调用它。可以对其进行增强,以便轻松获取要调用的功能的参数和重试次数。这里我们使用jstry-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()
*def fun=
"""
函数(){
对于(变量i=0;i<3;i++){
试一试{
空手道呼叫(“片状特征”);
karate.log(“***呼叫成功!”)
回来
}捕获(e){
log('try failed:',即e);
}
}
karate.fail('重试后测试失败:'+i);//karate.fail('message')仅在0.9.6以后版本中,您还可以[抛出'message']
}
"""
*乐趣
我们不支持在多个
场景中重复使用驱动程序,除非它是一个名为
功能。请参见此处的评论:

记住,空手道是开源的。请考虑贡献代码,如果这些是你的高优先级特性。

编辑-另请参见: