多条件重试故障排除
Troubleshooting Retry With Multiple Conditions
我目前有以下重试语句:
* retry until karate.xmlPath(response, '//ResultCount') == 1 && karate.xmlPath(response, '//Code') == 0
如果重试失败,将打印此消息:'too many retry attempts: 10'
我们面临的问题是:我们无法判断是哪一部分重试条件失败了。有没有人有什么建议?感谢您的帮助!
我尝试过的一些东西:
- 我无法为 ResultCount 和代码添加打印语句,因为如果重试失败,它不会打印,这是有道理的,因为它在 soap 操作中失败了
- 我尝试将 && 分成两行,但这没有帮助,请参见下文:
* retry until karate.xmlPath(response, '//ResultCount') == 1
* retry until && karate.xmlPath(response, '//Code') == 0
即使第一个条件通过而第二个条件失败,报告显示 soap 操作失败,所以我仍然无法判断哪个条件失败:
[passed] >> * retry until karate.xmlPath(response, '//ResultCount') >= 1
[passed] >> * retry until karate.xmlPath(response, '//Code') == 0 [it actually failed here]
[failed] >> * soap action 'http://mywebservice' too many retry attempts: 5
我的建议是定义一个函数 - 然后使用它,这样有助于分解和调试。此外,我还展示了另一种可能更强大的方法来获取响应。例如:
* def isValid =
"""
function() {
var resp = karate.get('response');
karate.log('testing response:', resp);
return karate.xmlPath(resp, '//ResultCount') == 1;
}
"""
# some code
* retry until isValid()
另请参阅此答案以获得更多想法:
我目前有以下重试语句:
* retry until karate.xmlPath(response, '//ResultCount') == 1 && karate.xmlPath(response, '//Code') == 0
如果重试失败,将打印此消息:'too many retry attempts: 10'
我们面临的问题是:我们无法判断是哪一部分重试条件失败了。有没有人有什么建议?感谢您的帮助!
我尝试过的一些东西:
- 我无法为 ResultCount 和代码添加打印语句,因为如果重试失败,它不会打印,这是有道理的,因为它在 soap 操作中失败了
- 我尝试将 && 分成两行,但这没有帮助,请参见下文:
* retry until karate.xmlPath(response, '//ResultCount') == 1
* retry until && karate.xmlPath(response, '//Code') == 0
即使第一个条件通过而第二个条件失败,报告显示 soap 操作失败,所以我仍然无法判断哪个条件失败:
[passed] >> * retry until karate.xmlPath(response, '//ResultCount') >= 1
[passed] >> * retry until karate.xmlPath(response, '//Code') == 0 [it actually failed here]
[failed] >> * soap action 'http://mywebservice' too many retry attempts: 5
我的建议是定义一个函数 - 然后使用它,这样有助于分解和调试。此外,我还展示了另一种可能更强大的方法来获取响应。例如:
* def isValid =
"""
function() {
var resp = karate.get('response');
karate.log('testing response:', resp);
return karate.xmlPath(resp, '//ResultCount') == 1;
}
"""
# some code
* retry until isValid()
另请参阅此答案以获得更多想法: