2017-07-12 1 views
0

Je suis nouveau pour être rassuré et je suis ' Je l'utilise actuellement pour l'implémenter dans notre framework de test.Rassurez-vous, l'utilisation de la requête Gpath donne une erreur "Le paramètre" ... "a été utilisé mais pas défini Définissez les paramètres en utilisant le JsonPath.params (...)"

Le problème auquel je fais face est d'extraire un objet d'un tableau Json de la réponse REST.

L'exemple JSON J'utilise:

{ 
    "MRData": { 
     "xmlns": "http://ergast.com/mrd/1.4", 
     "series": "f1", 
     "url": "http://ergast.com/api/f1/2016/drivers.json", 
     "limit": "30", 
     "offset": "0", 
     "total": "24", 
     "DriverTable": { 
      "season": "2016", 
      "Drivers": [ 
       { 
        "driverId": "alonso", 
        "permanentNumber": "14", 
        "code": "ALO", 
        "url": "http://en.wikipedia.org/wiki/Fernando_Alonso", 
        "givenName": "Fernando", 
        "familyName": "Alonso", 
        "dateOfBirth": "1981-07-29", 
        "nationality": "Spanish" 
       }, 
       { 
        "driverId": "bottas", 
        "permanentNumber": "77", 
        "code": "BOT", 
        "url": "http://en.wikipedia.org/wiki/Valtteri_Bottas", 
        "givenName": "Valtteri", 
        "familyName": "Bottas", 
        "dateOfBirth": "1989-08-28", 
        "nationality": "Finnish" 
       } 
      ] 
     } 
    } 
} 

choses que j'ai essayé jusqu'à présent:

Cette affirmation travaille

RestAssured.rootPath = "MRData.DriverTable.Drivers"; 
given() 
.when() 
.get("http://ergast.com/api/f1/2016/drivers.json") 
.then() 
.assertThat() 
.body("find { find { d -> d.driverId == 'alonso' }.code }.code", equalTo("ALO")); 

Mais je suis en train de faire réellement la Json de l'élément de matrice particulier

RestAssured.rootPath = "MRData.DriverTable.Drivers"; 
given() 
.when() 
.get("http://ergast.com/api/f1/2016/drivers.json") 
.then() 
.extract() 
//.jsonPath().param("driverId", "alonso").get("find { d -> d.driverId == driverId }"); 
.path("find { d -> d.driverId == 'alonso' }"); 

Essayé dans les deux sens (on est commenté). Mais j'obtiens une erreur:

"The parameter "driverId" was used but not defined. Define parameters using the JsonPath.params(...)" 

Répondre

0

RestAssured.rootPath = "MRData.DriverTable.Drivers"; ne fonctionne que pour les attentes du corps. Pour l'extraction, vous devez utiliser le chemin d'accès complet au paramètre, par ex. MRData.DriverTable.Drivers.find { [email protected] == 'alonso' }