Karate 空手道重复API调用

Karate 空手道重复API调用,karate,Karate,我们正在使用空手道对微服务进行后端测试。我希望能够对后端API进行N次调用,其中N可以配置为一个数字,而不必做一些不好的事情 这是我的第一个方法: Given url baseUrl And headers HEADERS When method get Then status 200 Given url baseUrl And headers HEADERS When method get Then status 200

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

这是我的第一个方法:

    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
(只是重复调用)它可以工作,但显然不能很好地扩展(想象一下其中的1000个)

下一种方法要好一点-我将调用放在一个单独的特性中,并使用了以下方法:

    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
稍微好一点,但仍然无法扩展。我们还尝试了各种各样的
karate.repeat()
,这似乎是最自然的方法,但语法有问题。我所能找到的示例中,没有一个在for-each的内部有API调用

* def callFunction = function (HEADERS) { read('call-putaway-once.feature'); { HEADERS: '#(HEADERS)'} }
* def result = karate.repeat(5, callFunction)
但是不能让任何种类的工作

有人能举个例子说明如何重复相同的空手道台词N次吗?我真的在寻找这样的东西:

for (int i = 0; i < numTimes; i++) {
    Given url baseUrl
    And headers HEADERS
    When method get
    Then status 200
}
for(int i=0;i
(或功能上等效的)


谢谢

给你。首先,第二个
称为.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

顺便说一下,在自述文件中搜索“轮询”,循环中有一个API调用示例:

空手道几乎有这样一个功能:
重试,直到

此功能不会重复“n”次,而是重复,直到条件未验证为止 示例如下:

对于一个简单的请求,它似乎是:

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