ໃນບົດສອນການທົດສອບ API ການສອບເສັງຄັ້ງນີ້, ພວກເຮົາມາເບິ່ງວິທີການແຍກ ຄຳ ຕອບຂອງ JSON ແລະສະກັດຂໍ້ມູນໂດຍໃຊ້ຫ້ອງສະ ໝຸດ ທີ່ຮັບປະກັນ REST.
ໃນເວລາທີ່ທົດສອບ API, ທ່ານມັກຈະຮ້ອງຂໍໃຫ້ມີຊັບພະຍາກອນ, (ຕົວຢ່າງ: ຜ່ານການຮ້ອງຂໍ GET ຫຼື POST). ເຄື່ອງແມ່ຂ່າຍກັບຄືນມາດ້ວຍການຕອບສະຫນອງແລະຫຼັງຈາກນັ້ນທ່ານເຮັດການຢືນຢັນບາງຢ່າງກ່ຽວກັບການຕອບໂຕ້.
ສຳ ລັບ ຄຳ ແນະ ນຳ ນີ້, ຂ້ອຍຈະ ນຳ ໃຊ້ JSONPlaceholder ເຊິ່ງແມ່ນ API REST online ທີ່ບໍ່ຖືກຕ້ອງ ສຳ ລັບການທົດສອບແລະ Prototyping. JSONPlaceholder ແມ່ນບໍລິການ online REST ທີ່ບໍ່ເສຍຄ່າທີ່ທ່ານສາມາດໃຊ້ໄດ້ທຸກຄັ້ງທີ່ທ່ານຕ້ອງການຂໍ້ມູນປອມ.
ພິເສດກວ່ານັ້ນ, ຂ້າພະເຈົ້າຈະ ນຳ ໃຊ້ຈຸດຈົບຂອງຜູ້ຊົມໃຊ້ jsonplaceholder .
ເມື່ອພວກເຮົາຮ້ອງຂໍ GET ກັບຊັບພະຍາກອນຂ້າງເທິງ, ພວກເຮົາໄດ້ຮັບການຕອບຮັບ JSON ເຊິ່ງປະກອບດ້ວຍລາຍຊື່ຜູ້ໃຊ້. ບັນຊີລາຍຊື່ນີ້ແມ່ນຕົວແທນເປັນ JSON Array. ແຕ່ລະອາເລມີໂຄງສ້າງເຊັ່ນນີ້:
{
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
. ໝາຍ ເຫດ | | + + _ | ໝາຍ ເຫດຊຶ່ງ ໝາຍ ເຖິງອົງປະກອບຮາກ.
ໃນຕົວຢ່າງຂ້າງເທິງ, ຖ້າພວກເຮົາຕ້ອງການຮັບເອົາຊື່ຜູ້ໃຊ້ຂອງການອອກສຽງທັງ ໝົດ, ພວກເຮົາສາມາດໃຊ້:
$
ສິ່ງນີ້ຈະພິມຂບວນເຊັ່ນ:
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));
ເບິ່ງໂຄງສ້າງ JSON ຂ້າງເທິງ, ຕົວຈິງແລ້ວບໍລິສັດແມ່ນແຜນທີ່. ຖ້າພວກເຮົາມີສະຖິຕິດຽວ, ພວກເຮົາສາມາດໃຊ້:
Bret
ເຊິ່ງຈະພິມ:
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