如何使用黄瓜方案大纲在API中填充多个查询参数

时间:2019-03-15 11:03:53

标签: cucumber rest-assured web-api-testing

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

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

我想根据黄瓜方案更改参数值

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,但是现在不推荐使用parameters方法,而且我不确定这是否可以实现。

大多数教程和文档都直接指定以given().queryParam().then()格式传递参数,在这种情况下,我必须对参数进行硬编码,而这是我所不希望的。

任何有关此方面的指示都将有所帮助。

1 个答案:

答案 0 :(得分: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);
    }

}