【发布时间】:2018-10-07 23:36:32
【问题描述】:
对于我们的一个 DELETE 请求,所用时间超过 30 秒。如果测试时间超过 30 秒,有时测试会失败。我需要添加等待响应,直到某些 GET 调用通过。 我试过下面的代码。 但我想检查 GET 调用中的某些条件,然后我想断言 DELETE 调用。
Feature:
Background:
* def waitUntil =
"""
function(x) {
while (true) {
var result = karate.call('classpath:ic/feature/soap/Common/getApplicationsList.feature');
var res = result.response;
karate.log('poll response in side java script', res.integration.serviceData.applicationsList.WmSOAPProvider['MyKarateSoap']);
karate.log('Actual responseis in jacva script ---> ', res.integration.serviceData.applicationsList.WmSOAPProvider)
var local = res.integration.serviceData.applicationsList.WmSOAPProvider['MyKarateSoap'];
karate.log('local value is--->' +local)
karate.log('res is ----->' +res)
if (res.integration.serviceData.applicationsList.WmSOAPProvider['MyKarateSoap'] == null) {
karate.log('condition satisfied, exiting');
return;
}
karate.log('sleeping in else block');
// uncomment / modify the sleep time as per your wish
java.lang.Thread.sleep(3000);
}
}
"""
Scenario: delete soap application
Given url appServer
And path '/integration/rest/application/WmSOAPProvider/' +'MyKarateSoap'
And header Accept = 'application/json'
And header Content-Type = 'application/json'
And header X-CSRF-TOKEN = lresult.response.csrfToken
* cookie JSESSIONID = lresult.responseCookies.JSESSIONID.value
* cookie route = lresult.responseCookies.route.value
When method delete
* call waitUntil 200
在上面的代码中,“waitUntil”只有在“delete”调用通过时才会被调用。
但我只想在 DELETE 调用响应失败/超过 30 秒时才调用“waituntil”
我关注了 How to retry a request until i get a valid dynamically generated value in response using karate dsl
但没有多大帮助
【问题讨论】:
-
嗨彼得,你提供的链接我无法解决问题。请提供有关条件等待的更多详细信息。我的场景是'如果 DELETE 调用失败,我不希望测试用例失败。我想等到我的 GET 调用返回 true'
-
我现在接受了我之前的问题。你能提供这个问题的解决方案吗?
-
我会尝试解释更多。第 10 行 当方法删除时,第 11 行 * 调用 waitUntil 200.. 这里第 11 行只有在第 10 行通过时才会执行。我的问题是,如果第 10 行也失败,我想拨打第 11 行。希望我能消除你的疑虑。
-
我尽我所能理解文档中的条件等待。但我不清楚彼得。
-
我要通过添加 karate.configure('readTimeout', 60000); 来解决问题;在 karate.config 文件中。但是对于有条件的等待,我仍然有疑问,我会看看是否有人在这里提供帮助。谢谢彼得
标签: karate