Karate框架:重试至条件满足时打印日志及重试前打印实际/预期值的方法
Karate框架重试时的日志打印与值输出实现方法
一、实现重试至条件满足时打印日志
Karate的retry关键字是实现重试逻辑的核心,你可以结合条件判断和日志语句,在重试满足条件后打印结果,甚至在重试过程中输出中间状态:
方式1:满足条件后打印最终日志
直接在重试完成后添加print语句,仅在条件达成时输出成功日志:
Scenario: 重试直到请求成功并打印结果 Given url 'http://target-api.com/status' When method get Then retry until response.status == 200 And print "重试成功!当前接口状态码: ", response.status
方式2:重试过程中打印中间状态
如果需要监控每次重试的失败情况,可以在重试块内添加条件判断,失败时打印日志并触发继续重试:
Scenario: 重试过程中输出状态,成功后打印结果 Given url 'http://target-api.com/status' When method get Then retry 5 times every 1000 ms # 指定最多重试5次,间隔1秒 And if response.status != 200 print "重试中... 当前状态码: ", response.status, ",未达到预期200" karate.fail("状态码不符合要求,触发下一次重试") And print "最终重试成功,接口状态码: ", response.status
二、重试执行前打印实际值与预期值
要在每次重试开始前输出实际值和预期值,推荐使用Karate的脚本式重试(karate.retry()函数),这样能更灵活地控制重试前后的逻辑:
Scenario: 每次重试前打印实际与预期值 * def expectedStatus = 200 * def retryResult = karate.retry(3, 500, function() { // 重试前先打印预期值 karate.log("即将执行重试:预期状态码 =", expectedStatus) // 发送请求获取实际值 var res = karate.get('http://target-api.com/status') // 打印当前实际值 karate.log("重试前实际状态码 =", res.status) // 返回判断结果,true则停止重试,false则继续 return res.status == expectedStatus }) * print "重试成功!最终状态码: ", retryResult.response.status
如果偏好Gherkin风格,也可以将打印逻辑嵌入重试的判断流程中,确保每次重试判断前执行输出:
Scenario: Gherkin风格重试前打印值 Given url 'http://target-api.com/status' * def expected = 200 When method get Then retry 3 times every 500 ms And print "重试检查:预期值 =", expected, ",当前实际值 =", response.status And match response.status == expected
内容的提问来源于stack exchange,提问作者Nagulan S
相关产品推荐
相关产品推荐

