我正在使用Rest Assured,结合Cucumber来测试具有多个查询参数的API。假设API是
http://dev.abcd.com/mainpath?param1=value1¶m2=value2¶m3=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()
格式传递参数,在这种情况下,我必须对参数进行硬编码,而这是我所不希望的。
任何有关此方面的指示都将有所帮助。
答案 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 + "¶m2=" + Param2 + "¶m3=" + 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);
}
}