【问题标题】:How do i parameterize parameters i am passing in my API request & execute through Karate?我如何参数化我在 API 请求中传递的参数并通过空手道执行?
【发布时间】:2019-06-28 13:02:29
【问题描述】:

我正在为我的应用程序测试 API,每个 API 都有多个要传递的参数,例如。下面:

https://abc.xyz.com/***.svc/restful/GetSummary?FromDate=2019/06/28&ToDate=2019/06/28&CompAreaId=15&RegId=4

请求中的每个参数都有多个值(在一组定义的值内),所以如果我想用它可能具有的所有值参数化每个参数,我如何创建一个可以帮助我实现这一目标的场景?

我将不胜感激任何提示/意见。

我一直在传递参数,如下面的代码所示,但无法完成上述场景,每次在单独的场景中传递参数会很耗时且重复。

场景:验证 GetContext API 是否返回带有参数的数据

Given path 'GetContext'
And param FromDate = '2019/06/27'
And param ToDate = '2019/06/27'
And param CompAreaId = 20
And param RegId = 4
When method get
Then status 200
* def res = response
* print 'response:', response

【问题讨论】:

    标签: api testing karate data-driven


    【解决方案1】:

    您可以使用“场景大纲”来实现这一点。以下修改后的代码将针对示例中的 3 行运行。 (相关链接:https://github.com/intuit/karate#the-cucumber-way

    Scenario Outline:
    Given path 'GetContext'
    And param FromDate = '<FromDate>'
    And param ToDate = '<ToDate>'
    And param CompAreaId = <CompAreaId>
    And param RegId = <RegId>
    When method get
    Then status 200
    * def res = response
    * print 'response:', response
    
      Examples:
        | FromDate   | ToDate      | CompAreaId | RegId |
        | 2019/06/27 | 2019/06/27  | 20         | 4     |
        | 2019/06/28 | 2019/06/28  | 21         | 5     |
        | 2019/06/29 | 2019/06/29  | 22         | 6     |
    

    如果您有动态的行数,而不是静态计数,您可以将参数值存储在 json 或 CSV 中并在示例中引用它。 (相关链接:https://github.com/intuit/karate#dynamic-scenario-outline

    【讨论】:

    • 另外一个问题;如果我想在功能文件的最开始定义/声明 FromDateToDate 参数的值,那么,如果我想将日期范围更改为根据我的需要,我将不得不在开始时更改它,而不是针对每个场景大纲。
    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2016-04-03
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多