web-dev-qa-db-fra.com

Comment passer des paramètres à Rest-Assured

Quelqu'un peut-il m'aider dans ce scénario:

Lorsque j'appelle ce service, http://restcountries.eu/rest/v1/, je reçois des informations sur quelques pays.

Mais lorsque je souhaite obtenir des informations sur un pays spécifique, comme par exemple la Finlande, j'appelle le service Web sous la forme http://restcountries.eu/rest/v1/name/Finland pour obtenir les informations relatives au pays.

Pour automatiser le scénario ci-dessus, comment paramétrer le nom du pays dans Rest-Assured ? J'ai essayé ci-dessous, mais ne m'aide pas.

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

Comme l'explique la documentation: 

REST Assured essaiera automatiquement de déterminer le type de paramètre (c'est-à-dire une requête ou un paramètre de formulaire) basé sur la méthode HTTP. En cas de Les paramètres de requête GET seront automatiquement utilisés et en cas de POST les paramètres de formulaire seront utilisés.

Mais dans votre cas, il semble que vous ayez besoin du paramètre path plutôt que des paramètres de requête. Notez également que l’URL générique pour obtenir un pays est http://restcountries.eu/rest/v1/name/{country}{country} est le nom du pays. 

Il existe également plusieurs façons de transférer les paramètres de chemin. 

Voici quelques exemples

Exemple avec 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"));

Exemple d'utilisation de 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"));

Maintenant, si vous avez besoin d’appeler différents services, vous pouvez également paramétrer le "service" comme ceci:

// 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"));

Après, vous pouvez également utiliser facilement la @RunWith(Parameterized.class) de JUnit pour alimenter les paramètres 'svc' et 'valeur' ​​d'un test unitaire. 

13
рüффп

Vous appelez l'appel GET de manière incorrecte. 

La parameters("name","Finland") sera convertie uniquement en paramètre query ou en paramètre form pour GET et POST/PUT respectivement

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

est la seule façon de faire. Comme c'est un DSL Java, vous pouvez construire l'URL tout seul et le transmettre à get () si nécessaire

Si l'URL avec une requête GET devait extraire les mêmes détails, procédez comme suit:

http://restcountries.eu/rest/v1?name=Finland ,

Le votre DSL serait quelque chose comme:

RestAssured.given().parameters("name","Finland").
                when().
                        get("http://restcountries.eu/rest/v1")

Lorsque vous avez une demande GET, vos paramètres se transforment en queryParameters.

Plus d'infos sur ce lien: https://code.google.com/p/rest-assured/wiki/Usage#Parameters

1
Karthik R

la méthode parameters est obsolète et commence à utiliser params.

Exemple: RestAssured.given().params("name","Finland")

0
Aruna