Come la documentazione spiega:
stare certi cercherà automaticamente di determinare quale tipo di parametro (cioè query o parametro di modulo) basato sul metodo HTTP . In caso di i parametri di query GET verranno automaticamente utilizzati e in caso di POST verranno utilizzati i parametri del modulo.
Ma nel tuo caso sembra che tu abbia bisogno di parametri di percorso invece di parametri di interrogazione. Nota inoltre che l'URL generico per ottenere un Paese è http://restcountries.eu/rest/v1/name/{country}
dove {country}
è il nome del paese.
Quindi, ci sono anche più modi per trasferire i parametri del percorso.
Ecco alcuni esempi
Esempio con 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"));
Esempio con variabile:
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"));
Ora, se avete bisogno di chiamare i servizi diversi, è anche possibile parametrizzare il "servizio" come questo:
// 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"));
Dopo aver anche facilmente utilizzato JUnit @RunWith(Parameterized.class)
per alimentare i parametri "svc" e "valore" per un test di unità.
Sembra che la chiamata al servizio Web non sia corretta, quando invoco, http://restcountries.eu/rest/v1?name=Finland, sto ricevendo le informazioni di tutti i paesi, piuttosto se provi "http://restcountries.eu/rest/v1/name/Finland "stai ricevendo informazioni specifiche sul paese. – Uday
La mia risposta è già stata corretta. pls check –
Se passiamo parametro per valore, allora qual è il vantaggio di avere parametri qui? \t String strCountryName = "Finland"; \t \t RestAssured.given(). // \t \t \t \t \t \t parametri \t ("nome", "Finlandia"). \t \t \t \t \t quando(). \t \t \t \t \t \t \t get ("http://restcountries.eu/rest/v1/name/" + strCountryName). \t \t \t \t \t quindi(). \t \t \t \t \t \t corpo ("capitale", hasItem ("Helsinki")); Perché ho bisogno dei parametri sopra i quali ho commentato? – Uday