空手道有没有办法以相同的执行方式自动重新运行UI测试自动化的失败方案(甚至在API中也是如此)。我正在使用gradle作为构建工具。 这是我的要求,如果任何测试失败,则应再次重试。
如果在每种功能场景之后我们都可以跳过stop(),那么也是任何方法。并且只能在功能之后调用。这样单个驱动程序实例将适用于在一个功能文件中编写的所有方案。
请提出建议。
答案 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
请记住,空手道是开源的。如果这些是您的优先级高的功能,请考虑提供代码。