Als Dokumentation erläutern:
REST Assured automatisch zu bestimmen versuchen, dem Parametertypen (dh Abfrage oder Formular-Parameter) basierend auf der HTTP-Methode . Im Fall von werden GET-Abfrageparameter automatisch verwendet und im Falle von POST werden die Formularparameter verwendet.
Aber in Ihrem Fall scheint es, dass Sie Pfadparameter statt Abfrageparameter benötigen. Beachten Sie auch, dass die generische URL zum Abrufen eines Landes http://restcountries.eu/rest/v1/name/{country}
ist, wobei {country}
der Name des Landes ist.
Dann gibt es auch mehrere Möglichkeiten, Pfadparameter zu übertragen.
Hier sind einige Beispiele
Beispiel mit 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"));
Beispiel mit Variable:
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"));
Nun, wenn Sie verschiedene Dienste aufrufen müssen, können Sie auch die Parametrisierung "Service" wie folgt:
// 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}", svc, val)
.then()
.body("capital", containsString("Bern"));
// Search by phone intl code (callingcode)
val = "359"
svc = "callingcode"
RestAssured.given()
.when()
.get("http://restcountries.eu/rest/v1/{service}/{value}", svc, val)
.then()
.body("capital", containsString("Sofia"));
Danach können Sie auch einfach die JUnit @RunWith(Parameterized.class)
verwenden, um die Parameter 'svc' und 'value' für einen Komponententest einzugeben.
Es scheint, ur Web-Service-Aufruf ist nicht korrekt, wenn ich aufrufen, http://restcountries.eu/rest/v1?name=Finland, ich bekomme Informationen aller Länder, eher wenn Sie versuchen, "http://restcountries.eu/rest/v1/name/Finland "erhalten Sie spezifische Länderinformationen. – Uday
Meine Antwort wurde bereits korrigiert. Bitte überprüfen Sie –
Wenn wir Parameter nach Wert übergeben, was ist der Vorteil von Parametern hier? \t String strCountryName = "Finnland"; \t \t RestAssured.given(). // \t \t \t \t \t \t \t Parameter ("Name", "Finnland"). \t \t \t \t \t wenn(). \t \t \t \t \t \t \t get ("http://restcountries.eu/rest/v1/name/" + strCountryName). \t \t \t \t \t dann(). \t \t \t \t \t \t Körper ("Hauptstadt", hasItem ("Helsinki")); Warum brauche ich Parameter, über die ich kommentiert habe? – Uday