空手道DSL的重试功能不起作用

时间:2019-03-04 02:35:07

标签: dsl karate

我一直在测试中使用一项功能,该功能可以调用retry函数来调用端点。

以前曾经可以正常工作,但最近几天相同的代码已停止工作。

我的代码是:

Feature: Invoke External

Background: 
* configure retry = { count: 5, interval: 5000 }

@parallel=false

Scenario: Invoke gateway

Given url externalGateway

And path domain + '/' + basepath + '/' +  path

And header Authorization = accessTokenforProd

And request 'test'

When method requestMethod

Then retry until responseStatus == externalGatewayResponse

Then print ' response code from Qantas External Gateway: ' , responseStatus

并且我使用以下语法调用此功能:

Then def responseFromAuthenticatedExternalWSO2Gateway = call read('classpath:examples/Services/InvokeAuthenticatedProdQantasExternalWSO2Gateway.feature') {'domain': '#(domain)' , 'basepath': '#(basepath)' , 'path': '#(path)' , 'externalGatewayResponse': '#(externalGatewayResponse)' , 'method': '#(requestMethod)' , 'accessTokenforSandbox': '#(accessTokenforSandbox)' }

Then match responseFromAuthenticatedExternalWSO2Gateway.responseStatus == 200

语法是否有问题?如果不是,那么我们是否做了可能影响重试功能的任何更改?

1 个答案:

答案 0 :(得分:2)

请阅读文档:https://github.com/intuit/karate#retry-until

您弄错了,retry until部分应该在method步骤之前。

在相关说明上,尤其是当我将requestMethod视为变量时,我觉得您对测试的设计过度了,强烈建议您不要这样做。避免使用call(除了设置类的东西之外),否则最终将难以维护测试。

有关详细信息,请参见以下答案:https://stackoverflow.com/a/54126724/143475