Java – how to pass parameters to rest assured
Someone can help me in this situation:
When I call this service, http://restaccounts.com EU / rest / V1 /, I got information from several countries
But when I want to get information about a specific country like Finland, I call the web service http://restcountries.eu/rest/v1/name/Finland To get information about the country
To automate the above scenario, how do I parameterize the country name in rest assured? I had an interview under, but it didn't help me
RestAssured.given().
parameters("name","Finland").
when().
get("http://restcountries.eu/rest/v1/").
then().
body("capital",containsString("Helsinki"));
Solution
As described in the document:
But in your case, it seems that you need path parameters instead of query parameters Also note that the common URL for getting countries is http://restcountries.eu/rest/v1/name/ {country} where {country} is the country name
Then, there are many ways to transmit path parameters
Here are a few examples
Example of using pathparam():
// Here the key name 'country' must match the url parameter {country}
RestAssured.given()
.pathParam("country","Finland")
.when()
.get("http://restcountries.eu/rest/v1/name/{country}")
.then()
.body("capital",containsString("Helsinki"));
Examples of using variables:
String cty = "Finland";
// Here the name of the variable have no relation with the URL parameter {country}
RestAssured.given()
.when()
.get("http://restcountries.eu/rest/v1/name/{country}",cty)
.then()
.body("capital",containsString("Helsinki"));
Now, if you need to call different services, you can also parameterize the "service" like this:
// Search by name
String val = "Finland";
String svc = "name";
RestAssured.given()
.when()
.get("http://restcountries.eu/rest/v1/{service}/{value}",svc,val)
.then()
.body("capital",containsString("Helsinki"));
// Search by ISO code (alpha)
val = "CH"
svc = "alpha"
RestAssured.given()
.when()
.get("http://restcountries.eu/rest/v1/{service}/{value}",containsString("Bern"));
// Search by phone intl code (callingcode)
val = "359"
svc = "callingcode"
RestAssured.given()
.when()
.get("http://restcountries.eu/rest/v1/{service}/{value}",containsString("Sofia"));
Then you can easily use JUnit @ runwith (parameterized. Class) to provide parameters' SVC 'and' value 'for unit tests
