Karate框架下SOAP请求全流程按条件最多重试5次实现咨询
解决方案
核心实现思路
- 把「查库取数→构造SOAP请求→发请求→校验响应」的完整流程封装为可重复调用的逻辑
- 外层控制最多5次重试,每次调用都会重新执行全流程更新请求参数
- 某次调用满足
response.id > 5000则直接终止流程,5次全部失败则主动抛出用例失败异常
完整代码示例
Scenario: 循环重试发送SOAP请求直到满足条件 # 封装全流程重试逻辑,最多执行5次 * def runFullFlow = """ function() { for (let retryCount = 1; retryCount <= 5; retryCount++) { karate.log('当前是第', retryCount, '次执行全流程'); // 步骤1:生成随机数查询范围 var randomNum = db.readRows("select trunc(dbms_random.value(10000000, 10010000)) min, trunc(dbms_random.value(10200000, 10250000)) max from dual") // 步骤2:查询目标数据,无数据直接进入下一次重试 var holderFromDB = db.readRows("SELECT productId, userId from table1 WHERE id between "+randomNum[0].MIN+" and "+randomNum[0].MAX+" ") if (holderFromDB.length < 1) { karate.log('第', retryCount, '次查库无匹配数据,进入重试'); continue; } // 步骤3:构造SOAP请求体 var productId = holderFromDB[0].productId; var userId = holderFromDB[0].userId; var javaclass = Java.type('epos.positionmanagement.service.test.GetSpendingLimitRequestTest') var map = {deviceTypeId: 2, entityId: defaultEntity, ppr_id: productId, userId: userId } var requestBody = javaclass.getPayload(map) karate.log('本次请求体:', requestBody) // 步骤4:发送SOAP请求 var response = karate.call('@sendSoapRequest', {reqBody: requestBody}) // 步骤5:校验响应是否符合要求 var revisionId = karate.get(response, "//GetSpendingLimitResponse/spendingLimit/totalAmount") * 1; if (revisionId > 5000) { karate.log('校验通过,revisionId=', revisionId, ',终止重试流程'); return {success: true, response: response}; } karate.log('第', retryCount, '次校验不通过,revisionId=', revisionId); } // 5次重试全部失败,抛出用例失败异常 karate.fail('5次重试全部结束,仍未满足校验条件,用例执行失败'); } """ # 执行重试逻辑 * def execResult = call runFullFlow # 封装SOAP请求可复用片段 @sendSoapRequest * def sendSoapRequest = """ function(params) { Given request params.reqBody When soap action 'Request' Then status 500 karate.log('本次响应结果:', response) return response; } """
注意事项
- JS逻辑中直接传递变量即可,不需要加
#()包裹,该占位符仅适用于Karate原生JSON表达式解析场景 - 所有DB查询、请求构造逻辑都放在循环内部,保证每次重试都会生成全新的请求参数
- 若需要控制重试间隔,可以在重试逻辑前加
java.lang.Thread.sleep(1000)调整等待时长,单位为毫秒
内容的提问来源于stack exchange,提问作者Rohit Kumar
相关产品推荐
相关产品推荐

