gpt4 book ai didi

java - 如何将参数传递给 Rest-Assured

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:57 26 4
gpt4 key购买 nike

在这种情况下有人可以帮助我吗:

当我调用这个服务时,http://restcountries.eu/rest/v1/,我得到了几个国家的信息。

但是,当我想获取任何特定国家/地区的信息(例如芬兰)时,我调用 Web 服务作为 http://restcountries.eu/rest/v1/name/Finland 以获取与国家/地区相关的信息信息。

要使上述场景自动化,我如何在 Rest-Assured 中参数化国家名称?我在下面尝试过,但对我没有帮助。

RestAssured.given().
parameters("name","Finland").
when().
get("http://restcountries.eu/rest/v1/").
then().
body("capital", containsString("Helsinki"));

最佳答案

如文档所述:

REST Assured will automatically try to determine which parameter type(i.e. query or form parameter) based on the HTTP method. In case ofGET query parameters will automatically be used and in case of POSTform parameters will be used.

但在您的情况下,您似乎需要路径参数而不是查询参数。另请注意,获取国家/地区的通用 URL 是 https://restcountries.com/v2/name/{country}其中 {country} 是国家名称。

那么,传递路径参数的方式也有多种。

举几个例子

使用 pathParam() 的示例:

// Here the key name 'country' must match the url parameter {country}
RestAssured.given()
.pathParam("country", "Finland")
.when()
.get("https://restcountries.com/v2/name/{country}")
.then()
.body("capital", containsString("Helsinki"));

使用变量的例子:

String cty = "Finland";

// Here the name of the variable (`cty`) have no relation with the URL parameter {country}
RestAssured.given()
.when()
.get("https://restcountries.com/v2/name/{country}", cty)
.then()
.body("capital", containsString("Helsinki"));

现在如果你需要调用不同的服务,你也可以像这样参数化“服务”:

// Search by name
String val = "Finland";
String svc = "name";

RestAssured.given()
.when()
.get("https://restcountries.com/v2/{service}/{value}", svc, val)
.then()
.body("capital", containsString("Helsinki"));


// Search by ISO code (alpha)
val = "CH"
svc = "alpha"

RestAssured.given()
.when()
.get("https://restcountries.com/v2/{service}/{value}", svc, val)
.then()
.body("capital", containsString("Bern"));

// Search by phone intl code (callingcode)
val = "359"
svc = "callingcode"

RestAssured.given()
.when()
.get("https://restcountries.com/v2/{service}/{value}", svc, val)
.then()
.body("capital", containsString("Sofia"));

之后,您还可以轻松地使用 JUnit @RunWith(Parameterized.class) 为单元测试提供参数“svc”和“value”。

关于java - 如何将参数传递给 Rest-Assured,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com