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

问题描述 投票:1回答:1

我一直在我的测试中使用一个功能,它调用重试功能来调用终点。

它过去工作正常,但在最近几天相同的代码已停止工作。

我的代码是:

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

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

dsl karate
1个回答
2
投票

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

你错了,retry until部分应该在method步之前。

在一个相关的说明 - 特别是当我看到requestMethod作为一个变量 - 我觉得你已经过度设计了你的测试,我强烈建议反对。避免使用call,除了设置类型的东西 - 否则你最终将难以维护测试。

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

© www.soinside.com 2019 - 2024. All rights reserved.