Karate 基于JSON响应的空手道轮询
我正在数据库中创建一个动物,然后试图检索我刚刚创建的动物。但是,数据库中存在5-10秒的时滞。因此,由于响应时间不同,睡眠等待不适合此场景 我想轮询消息,直到数组中返回animalId。在重新尝试请求时,重新生成requestId头也很重要 实现这一目标最优雅的方式是什么 情景:Karate 基于JSON响应的空手道轮询,karate,Karate,我正在数据库中创建一个动物,然后试图检索我刚刚创建的动物。但是,数据库中存在5-10秒的时滞。因此,由于响应时间不同,睡眠等待不适合此场景 我想轮询消息,直到数组中返回animalId。在重新尝试请求时,重新生成requestId头也很重要 实现这一目标最优雅的方式是什么 情景: Given path '/animals' And header requestId = uniqueString(5) When method post Then status 200
Given path '/animals'
And header requestId = uniqueString(5)
When method post
Then status 200
* def animalId = response.animalId
Given path '/animals'
And header requestId = uniqueString(5)
When method get
Then status 200
{
"animals": [
{
"animalId": "12219958",
"reference": [
"12345"
]
}
]
}
* def animalDetails = karate.jsonPath (response, "$.animals.[?(@.reference[0]== '" + animalId + "' )]")[0]
* def animalId = '12345'
您要查找的是
重试直到语法:
编辑:关于此要求:
在重新尝试请求时,重新生成requestId头也很重要
您必须使用JavaScript函数,这样每次重试都会触发它。否则,没有其他选项来调整主体,如果需要,请手动编写轮询循环(也在文档中解释)
编辑:下面是一个简单的示例,让您自己看看foo
头在每次重试时是如何动态的。将此粘贴到一个新的场景中
,它就会起作用
* def counter = { value: 0 }
* configure headers = function(){ return { foo: counter.value } }
* url 'http://httpbin.org/get'
* retry until counter.value++ == 2
* method get
您要查找的是重试直到语法:
编辑:关于此要求:
在重新尝试请求时,重新生成requestId头也很重要
您必须使用JavaScript函数,这样每次重试都会触发它。否则,没有其他选项来调整主体,如果需要,请手动编写轮询循环(也在文档中解释)
编辑:下面是一个简单的示例,让您自己看看foo
头在每次重试时是如何动态的。将此粘贴到一个新的场景中
,它就会起作用
* def counter = { value: 0 }
* configure headers = function(){ return { foo: counter.value } }
* url 'http://httpbin.org/get'
* retry until counter.value++ == 2
* method get
谢谢你的回答。你能提供一个在功能文件中的示例吗?还有一个函数示例(如果可能的话),假设重新生成的头是一个5位数的随机字符串。@zwanchi101在这里:-您上面共享的资源非常有用。但是,当我使用retry till
语法时,尽管在后台使用configure headers
,该函数仍不会触发。没有触发唯一的请求id,并且在循环的迭代2上使用了上一个值。有什么想法吗?@zwanchi101查看我的编辑,你可以看到foo
标题被发送了不同的值。谢谢你的回答。你能提供一个在功能文件中的示例吗?还有一个函数示例(如果可能的话),假设重新生成的头是一个5位数的随机字符串。@zwanchi101在这里:-您上面共享的资源非常有用。但是,当我使用retry till
语法时,尽管在后台使用configure headers
,该函数仍不会触发。没有触发唯一的请求id,并且在循环的迭代2上使用了上一个值。有什么想法吗?@zwanchi101查看我的编辑,您可以看到foo
标题以不同的值发送。请将答案标记为已接受:请将答案标记为已接受: