karate - 空手道-如何仅在失败的情况下自动重新运行
问题描述
在空手道中是否有任何方法可以在相同的执行中自动重新运行 UI 测试自动化(甚至在 API 中)失败的场景。我正在使用 gradle 作为构建工具。这是我这边的要求,如果任何测试失败,它应该再次重试。
如果我们可以在每个功能场景之后跳过 stop() 也是任何方式。并且只能在功能之后调用。这样单个驱动程序实例将适用于编写在一个功能文件中的所有场景。
请建议。
解决方案
目前不支持此功能。它可能会在下一个版本中出现,但不能保证。有些人认为重试是不好的测试实践,请查一下。
但这是一个可能的解决方法。如果你可以将你的“不稳定流”移动到一个特性中(应该已经是这种情况),你可以通过一个“包装器特性”和一个 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()
我们将不支持跨多个 -s 重用驱动程序,Scenario
除非它是一项called
功能。请参阅此处的评论:在karate-config.js 中登录的 callSingle 对于空手道 UI 测试无法正常工作
请记住,空手道是开源的。如果这些对您来说如此高优先级的功能,请考虑贡献代码。
推荐阅读
- python - 如何使用 qPython 在 KDB 中插入一行
- mysql - 我无法返回值。ERROR 1415 (0A000): 不允许从函数返回结果集
- node.js - 如何调用 express 来触发外部重定向并避免 COR
- java - 有没有办法将公共 jar URL 作为 maven 依赖项包含在内?
- python - 如何通过仅选择每小时的最后一行来过滤数据框?
- reactjs - React/Jest/Enzyme 如何模拟组件中服务的 API 调用?
- swift - 自从更新到 swift 5 后关闭工作表
- python - 当 na 在 pandas 列中时如何重置 cumprod
- docker - 扩展 CouchDB Docker 镜像
- bootstrap-4 - 如何使引导 4 表在整个行中保持宽度?