Di vê tutoriya API Testing-ê de, em awirek didin ka meriv çawa bersiva JSON-ê parçe dike û bi karanîna pirtûkxaneya REST-piştrastkirî agahî derdixe.
Dema ku API-yê diceribînin, hûn bi gelemperî daxwazek ji çavkaniyek dikin, (mînakî bi navgîniya daxwazek GET an POST). Pêşkêşker bi bersivek vedigere û dûv re jî hûn li ser bersivê hin poşmanan dikin.
Ji bo vê tutoriyê, ez ê bikar bînim JSONPlaceholder ku ji bo Ceribandin û Prototîpkirinê REST API ya sexte ye. JSONPlaceholder karûbarek BELA online a serhêl e ku hûn kengê ku hin daneyên derewîn hewce bikin hûn dikarin bikar bînin.
Bi taybetî, ez ê xala dawiya bikarhêneran bikar bînim jsonplaceholder .
Dema ku em ji çavkaniya jorîn daxwazek GET dikin, em bersivek JSON digirin ku navnîşek bikarhêneran tê de ye. Ev lîste wekî Array JSON tête nimînandin. Her array avahiyek bi vî rengî heye:
{
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'
} }
Ji ber vê yekê, di bersiva tevahî de, dê di array deh tomar hebin, ku her yek xwedan heman avahiya JSON e, lê bi nirxên cûda.
Girêdayî:
Naha, em dest bi parsekirin û derxistina hin nirxan ji JSON bikin.
Testmtîhana yekem dê bi gelemperî jimartina tomarên array be, ji ber vê yekê em dest pê bikin.
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());
} }
Encama banga jorîn dê 10
çap bike. Bala xwe bidin $
notkirin ku tê wateya hêmana kokê.
Di mînaka jorîn de, heke em dixwazin navê bikarhêner ê hemî navnîşan bistînin, em dikarin bikar bînin:
String usernames = response.jsonPath().getString('username'); System.out.println(usernames);
Ev ê array wiha çap bike:
[Bret, Antonette, Samantha, Karianne, Kamren, Leopoldo_Corkery, Elwyn.Skiles, Maxime_Nienow, Delphine, Moriah.Stanton]
Ger em hingê dixwazin navê bikarhêner ê navnîşa yekem bistînin em dikarin bikar bînin:
String usernames = response.jsonPath().getString('username[0]');
Ev ê navê bikarhêner ê yekem çap bike:
Bret
Bikaranîna Navnîşek em dikarin bikar bînin:
List jsonResponse = response.jsonPath().getList('username'); System.out.println(jsonResponse.get(0));
Ev ê navê bikarhêner ê yekem çap bike:
Bret
Li avahiya JSON-a jorîn mêze dikin, pargîdanî bi rastî nexşeyek e. Ger tenê tomarek me hebe, em dikarin bikar bînin:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/1'); Map company = response.jsonPath().getMap('company'); System.out.println(company.get('name'));
ku dê çap bike:
Romaguera-Crona
Lê heke bersiv bersivek vegerîne û em dixwazin navê pargîdaniya yekem derxînin, em dikarin bikar bînin:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); Map company = response.jsonPath().getMap('company[0]'); System.out.println(company.get('name'));
Wekî din, em dikarin bikar bînin:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); List
her du jî dê çap bikin:
Romaguera-Crona