如何使用Cucumber Scenario outline在API中填充多个查询参数

问题描述 投票:0回答:1

我正在使用Rest Assured,结合Cucumber来测试具有多个查询参数的API。比方说,API是

http://dev.abcd.com/mainpath?param1=value1&param2=value2&param3=value3

我想根据Cucumber场景改变参数值

Scenario Outline: API returns successfull response on different parameters

    Given Main path API is hit 
    When "<param1>","<param2>","<param3>" are passed
    Then the response returns a status code of 200

Examples:
  |param1|param2|param3|
  |value1|value2|value3|
  |value4|value5|value6|

我浏览了文档和另一个示例here,但参数方法现已弃用,我也不确定这是否可以完成。

大多数教程和文档直接指定以given().queryParam().then()格式传递参数,我将不得不对参数进行硬编码,这是我不想要的。

关于这方面的任何指示都是有帮助的。

cucumber rest-assured web-api-testing
1个回答
0
投票

我稍微更新了功能文件并使用了cucumber data tables功能来获取值。已经包含一个小片段,使用放心,根据您的URI拨打电话

特点:

Given I perform GET operation on URL with param values
| param1 | param2 | param3 |
| Value1 | Value2 | Value3 |
| Value4 | Value5 | Value6 |

步骤定义:

@Given("^I perform GET operation on URL with param values$")
public void i_perform_GET_operation_on_URL_with_param_values(DataTable arg1) {

    List < Map < String, String >> list = arg1.asMaps(String.class, String.class);
    for (int i = 0; i < list.size(); i++) {
        String Param1 = list.get(i).get("param1");
        String Param2 = list.get(i).get("param2");
        String Param3 = list.get(i).get("param3");

        String response = RestAssured.get("http://dev.abcd.com/mainpath?param1=" + Param1 + "&param2=" + Param2 + "&param3=" + Param3).then().extract().asString();
        //Edit suggested by Vamsi Ravi
        //String response = RestAssured.given().baseUri("http://dev.abcd.com").basePath("/mainpath").queryParam("param1",Param1).queryParam("param2",Param2).queryParam("param3", Param3).when().get().then().extract().asString();

        System.out.println("The Content is " + response);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.