空手道能否生成多个具有相同名称的查询参数?

时间:2018-10-16 13:28:15

标签: karate

我需要在URL中传递多个具有相同名称的查询参数,但在将其与空手道配合使用时遇到问题。就我而言,该网址应如下所示:

http://mytestapi.com/v1/orders?sort=order.orderNumber&sort=order.customer.name,DESC

注意2个名为“ sort”的查询参数。我尝试使用Karate创建这些查询字符串参数,但是在查询字符串中仅创建了最后一个“ sort”参数。这是我尝试执行此操作的方法:

Given path 'v1/orders'
    And param sort = 'order.orderNumber'
    And param sort = 'order.customer.name,DESC'
    And header Authorization = authInfo.token
    And method get
    Then status 200

并且:

Given path 'v1/orders'
    And params sort = { sort: 'order.orderNumber', sort: 'order.customer.name,DESC' }
    And header Authorization = authInfo.token
    And method get
    Then status 200

并且:

    Given path 'v1/order?sort=order.orderNumber&sort=order.customer.name,DESC'
    And header Authorization = authInfo.token
    And method get
    Then status 200

前两种方式提供相同的查询字符串结果:?sort=order.customer.name%2CDESC

最后一个示例不起作用,因为?得到编码,这是预期的,并在这篇文章中得到了解释-Karate API Tests - Escaping '?' in the url in a feature file

很明显,第二个“ sort”参数将覆盖第一个参数,并且仅向URL添加一个参数。我浏览了空手道文档,这非常好,但是我没有找到添加具有相同名称的多个参数的方法。

那么,空手道中有没有一种方法可以设置多个具有相同名称的URL查询参数?

1 个答案:

答案 0 :(得分:3)

是的,您可以在空手道中生成多个具有相同名称的查询参数

相似键的所有值都应在数组中提供。

Given path 'v1/orders'
And params {"sort":["order.orderNumber","order.customer.name,DESC"]}
And header Authorization = authInfo.token
And method get
Then status 200

使用param设置单个参数就像

And param sort = ["order.orderNumber","order.customer.name,DESC"]