重试期间是否有办法在KarateDSL中传递新请求?谢谢,

时间:2019-12-27 05:26:37

标签: api testing karate

我的功能是这样的:

Scenario:  Searching Value
* def Search = generateRandomNumberFive(111,999)
* call read('classpath:services/common.feature')
Given url domain + '/localhost/mysearch?query=' + Search
And headers scenarioHeaders
And retry until myRecord != $response.suggestions[0].ID == 8
When method get
Then status 200
* def myRecord = $response.suggestions[?(@.ID==8)]

我希望在以后重试时重新生成iSearch值。谢谢大家的帮助,并提前感谢@ peter-thomas!

1 个答案:

答案 0 :(得分:0)

  

然后重试,直到myRecord!= $ response.suggestions [0] .ID == 8

那肯定是不正确的。重试表达式必须是纯JS。此处详细说明:https://stackoverflow.com/a/55823180/143475

因此,您应该摆脱$-JsonPath(而不是JS)。

And retry until myRecord != response.suggestions[0].ID == 8

如果您需要重新生成Search,我认为您唯一的选择是手动循环,请参见polling.feature。空手道retry until的工作方式是,它将按原样重播请求,并且您无法对其进行修改。