空手道重复API调用

时间:2019-06-27 18:11:11

标签: karate

我们正在使用空手道对微服务进行后端测试。我希望能够对后端API进行N次调用,其中N可以配置为数字而不必做难看的事情。

这是我的第一种方法:

@PropertySource(value = "classpath:application.properties") 

(只是重复通话),它可以工作,但是扩展性很差(想象其中的1000个)。

下一种方法要好一些-我将呼叫放在一个单独的功能中,并使用了https://github.com/intuit/karate#data-driven-features方法:

    Given url baseUrl
    And headers HEADERS
    When method get
    Then status 200

    Given url baseUrl
    And headers HEADERS
    When method get
    Then status 200

    Given url baseUrl
    And headers HEADERS
    When method get
    Then status 200

稍微好一点,但仍然无法扩展。我们还尝试了 * table jwts | headers | | HEADERS | | HEADERS | | HEADERS | | HEADERS | | HEADERS | * def result = call read('call-once.feature') jwts 的变体,这似乎是最自然的方法,但是语法上却遇到了麻烦。我找不到的示例都没有在for-each内部进行API调用。

karate.repeat()

但无法获得任何效果。

谁能提供一个示例,说明如何将相同的空手道线重复N次?我真的在寻找类似的东西:

* def callFunction = function (HEADERS) { read('call-putaway-once.feature'); { HEADERS: '#(HEADERS)'} }
* def result = karate.repeat(5, callFunction)

(或功能等效)。

谢谢!

2 个答案:

答案 0 :(得分:1)

您在这里。首先,第二个called.feature

@ignore
Feature:

Scenario:
Given url 'http://httpbin.org'
And path 'headers'
And header X-Karate = count
When method get
Then status 200

现在您可以在第一个功能中做到这一点:

* def fun = function(x){ return { count: x } }
* def data = karate.repeat(5, fun)
* call read('called.feature') data

P.S。通过在自述文件中搜索“轮询”的方式,有一个循环中的API调用示例:polling.feature

答案 1 :(得分:0)

空手道几乎可以做到这一点:retry until

此功能不会重复“ n”次,而是重复直到条件无效 此处的示例:polling.feature

对于一个简单的请求,它看起来像是:

Given url baseUrl
And headers HEADERS
And retry until responseStatus == 200
When method get