空手道功能中的For循环无法正常工作

时间:2018-07-17 13:38:38

标签: karate

我正在使用以下代码从数组中获取JSON响应,但只能获取到位置12。脚本正在传递,但我希望可以打印出超过218个值。

Feature: Verify Branches

Background: For loop implementation
    Given url ''
    When method GET
    Then status 200  
    * def i = 000
    * def z = response.locations[i].zip
    * def p = response.locations[i].phone
    * def fun = 
    """ 
    function(locations){ 
        for (var i = 0; i < response.locations.length; i++)
        {
            print(i)
            print('Element at Location ' + i +':' + p)
        }
    }
    """ 

Scenario: Validate the locations
    Given url ''
    When method GET
    Then status 200  
    * call fun z
    * print z.length

z.length应该给我218,但是给z给出218,它打印10,为p给出12。

1 个答案:

答案 0 :(得分:1)

请在空手道中使用match each。您无需以编程方式进行操作。

* def data = { foo: [{ bar: 1, baz: 'a' }, { bar: 2, baz: 'b' }, { bar: 3, baz: 'c' }]}

* match each data.foo == { bar: '#number', baz: '#string' }