როგორ განვიხილოთ JSON რეაგირება REST- თან ერთად

ამ API ტესტირების სახელმძღვანელოში ჩვენ ვუყურებთ თუ როგორ უნდა გავაანალიზოთ JSON რეაგირება და ამოვიღოთ ინფორმაცია REST- ით დაზღვეული ბიბლიოთეკის გამოყენებით.

API- ს ტესტირებისას, როგორც წესი, თხოვნით მიმართავთ რესურსს (მაგ. GET ან POST მოთხოვნის საშუალებით). სერვერი ბრუნდება პასუხით და შემდეგ თქვენ აკეთებთ მტკიცებებს პასუხზე.



როგორ ხდება JSON რეაგირების ანალიზი

ამ სახელმძღვანელოსთვის გამოვიყენებ JSON ადგილის მფლობელი რაც არის ყალბი ონლაინ REST API ტესტირებისა და პროტოტიპირებისთვის. JSONPlaceholder უფასო ონლაინ REST სერვისია, რომლის გამოყენება შეგიძლიათ, როდესაც ყალბი მონაცემები დაგჭირდებათ.


უფრო კონკრეტულად, მე გამოვიყენებ მომხმარებლების საბოლოო წერტილს jsonplaceholder .

მოთხოვნა და პასუხი

როდესაც GET თხოვნით მივმართავთ ზემოხსენებულ რესურსს, მივიღებთ JSON პასუხს, რომელიც შეიცავს მომხმარებელთა სიას. ეს სია წარმოდგენილია როგორც JSON მასივი. თითოეულ მასივს აქვს ასეთი სტრუქტურა:


{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: 'Sincere@april.biz',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: {

lat: '-37.3159',

lng: '81.1496'
}
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
} }

ამიტომ, სრული პასუხის შემთხვევაში, მასივში იქნება ათი ჩანაწერი, თითოეულს აქვს იგივე JSON სტრუქტურა, მაგრამ განსხვავებული მნიშვნელობებით.

დაკავშირებული:

ახლა კი, დავიწყოთ JSON– დან ზოგიერთი მნიშვნელობის ანალიზითა და მოპოვებით.

როგორც წესი, პირველი ტესტი მასივში ჩანაწერების რაოდენობის დათვლა იქნება, ასე რომ, დავიწყოთ იქიდან.


import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.parsing.Parser; import io.restassured.response.Response; import java.util.List; import static io.restassured.RestAssured.given; public class RestTest {
public static Response doGetRequest(String endpoint) {
RestAssured.defaultParser = Parser.JSON;

return

given().headers('Content-Type', ContentType.JSON, 'Accept', ContentType.JSON).


when().get(endpoint).


then().contentType(ContentType.JSON).extract().response();
}
public static void main(String[] args) {
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users');

List jsonResponse = response.jsonPath().getList('$');

System.out.println(jsonResponse.size());
} }

ზემოაღნიშნული ზარის შედეგი დაბეჭდავს 10. გაითვალისწინეთ $ აღნიშვნა რაც ნიშნავს ძირეულ ელემენტს.

JSON მასივებისა და სიების ანალიზი

ზემოთ მოყვანილ მაგალითში, თუ გვსურდა ყველა ჩანაწერის მომხმარებლის სახელის მიღება, შეგვეძლო გამოგვეყენებინა:

String usernames = response.jsonPath().getString('username'); System.out.println(usernames);

ეს მასივი დაბეჭდავს შემდეგნაირად:

[Bret, Antonette, Samantha, Karianne, Kamren, Leopoldo_Corkery, Elwyn.Skiles, Maxime_Nienow, Delphine, Moriah.Stanton]

თუ გვინდა მივიღოთ პირველი ჩანაწერის მომხმარებლის სახელი, ჩვენ შეგვიძლია გამოვიყენოთ:


String usernames = response.jsonPath().getString('username[0]');

ამით დაიბეჭდება პირველი მომხმარებლის სახელი:

Bret

სიის გამოყენებით შეგვიძლია გამოვიყენოთ:

List jsonResponse = response.jsonPath().getList('username'); System.out.println(jsonResponse.get(0));

ეს დაბეჭდავს პირველ მომხმარებლის სახელს:

Bret

JSON ArrayList- ისა და HashMap- ის ანალიზი

JSON- ის ზემოთ მოცემულ სტრუქტურას გადავხედავთ, კომპანია რეალურად წარმოადგენს რუკას. მხოლოდ ერთი ჩანაწერი რომ გვქონდეს, გამოვიყენებდით:


Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/1'); Map company = response.jsonPath().getMap('company'); System.out.println(company.get('name'));

რომელიც დაბეჭდავს:

Romaguera-Crona

თუ პასუხი მასივს დააბრუნებს და პირველი კომპანიის სახელის მოპოვება გვსურს, შეგვიძლია გამოვიყენოთ:

Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); Map company = response.jsonPath().getMap('company[0]'); System.out.println(company.get('name'));

გარდა ამისა, ჩვენ შეგვიძლია გამოვიყენოთ:

Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); List companies = response.jsonPath().getList('company'); System.out.println(companies.get(0).get('name'));

ორივე დაბეჭდავს:


Romaguera-Crona

საინტერესო სტატიები