【问题标题】:Can Karate generate multiple query parameters with the same name?空手道可以生成多个同名的查询参数吗?
【发布时间】:2018-10-16 23:49:50
【问题描述】:

我需要在一个 URL 中传递多个具有相同名称的查询参数,但我无法让它与空手道一起使用。在我的例子中,URL 应该是这样的:

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

注意 2 个名为“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

很明显,第二个“排序”参数覆盖了第一个参数,并且只有一个参数被添加到 URL。翻阅了空手道的文档,很不错,但是还没有找到添加多个同名参数的方法。

那么,空手道有没有办法设置多个同名的 URL 查询参数?

【问题讨论】:

    标签: karate


    【解决方案1】:

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

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

    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"]
    

    【讨论】:

      猜你喜欢
      • 2022-10-20
      • 2020-10-16
      • 2020-12-08
      • 2013-02-19
      • 2023-01-10
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多