我们有一个系统,用于在测试期间发出一些 PUT 请求。问题是,目前该系统的资源存在一些问题,有时无法及时响应。我们无法将读取超时值增加到大于 60 秒的值,原因有两个:如果系统响应速度不快,则很可能根本不会响应;其次,我们使用的代理在 60 秒时超时。
我知道this问题,但是等待Http or 等待端口不符合我们的要求,因为端口可用,并且没有运行状况端点告诉我们 PUT 请求是否会成功或只是丢失。
我们还能做些什么吗?
示例功能:
Background:
* url dep_url
* configure headers = read('classpath:package/headers/headers.json')
* retry until responseStatus !== 429
Scenario: Create entity
Given request read('classpath:package/body/' + file)
When path '/entity/' + entity[index]
And method put
Then assert responseStatus == 200 || responseStatus == 201
当抛出 SocketTimeoutException 时我们需要重试,例如:
java.net.SocketTimeoutException: Read timed out, http call failed after 253 milliseconds for url
好吧,然后尝试轮询:https://stackoverflow.com/a/56799845/143475
并将该方法与您可以使用 JS 的事实相结合try-catch
在空手道中:https://stackoverflow.com/a/67024149/143475
所以也许是这样的:
* def failed = false
* eval try { karate.call('called.feature') } catch (e) { karate.set('failed', true) }
您现在应该能够找到解决方案。请发布您的想法。
编辑:对于那些对调用第二个功能文件感觉不好的人,您可以在一个文件中完成所有操作,如下所示:
Feature:
Scenario:
* call read('@called')
@ignore @called
Scenario:
* print 'called'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)