Chắc cũng chưa có nhiều bạn biết về Json Schema và chưa biết cách test cái đó, nên mình viết bài này để các bạn biết thêm 1 cách test.
Nội dung
I. Json Schema là gì? Dùng làm gì?
1. Định nghĩa
- Schema nghĩa tiếng anh là khung, giống như outline hoặc model.
JSON Schema is a vocabulary that allows you to annotate and validate JSON documents.
HTTPS://JSON-SCHEMA.ORG/
- Từ bản Mô tả data format của json –> chúng ta áp dụng kiểm tra cấu trúc dữ liệu json khi làm API test. Nói đơn giản, chúng ta chỉ kiểm tra cái khung của response thôi, chứ không kiểm tra data của response.
2. Vậy khi nào thì dùng cái này
- Khi mình muốn verify nhanh, không muốn mất quá nhiều thời gian vào việc viết test check từng data trong response.
- Khi mình không biết phải test data trong response như thế nào? Ví dụ: có 1 API trả về 1 list các quyển sách, bạn không biết được số lượng chính xác là bao nhiêu quyển và có những quyển sách nào, chỉ biết cấu trúc response –> chỉ verify được cấu trúc của response. (Ok, đây là ví dụ, xin đừng bắt bẻ.)
II. Cách thực hiện
1. Response là Object
Test sẽ là:
const schema = {
"type": "object",
"properties": {
"id": {"type": "number"},
"firstName": {"type": "string"},
"lastName": {"type": "string"},
"email": {"type": "string"},
"programme": {"type": "string"},
"courses": {"type": "array"}
},
// Field nào là bắt buộc thì liệt kê ở phần require
"require": ["id", "courses"]
};
pm.test("Validate schema", () => {
pm.response.to.have.jsonSchema(schema);
});
URL cho bạn muốn thử: https://run.mocky.io/v3/a7b67072-41b3-4a4b-89b8-a540bc17b08b
Type dữ liệu là những loại sau đây:
- string
- number
- boolean
- null
- object
- array
Run trên postman:
2. Khi có Nested Object
Test sẽ là:
const schema = {
"type": "object",
"properties": {
"code": { "type": "string" },
"error": {
"type": "object",
"properties": {
"message": { type: "string" }
},
"required": ["message"]
}
},
"required": ["code", "error"]
};
pm.test("Validate schema", () => {
pm.response.to.have.jsonSchema(schema);
});
3. Khi value có thể có nhiều data type
Ví dụ: message có thể là string, null hoặc object.
"message": { type: ["string", null, "object"] }
URL cho bạn muốn thử: https://run.mocky.io/v3/79fd4165-de48-41d9-bfab-822ce724a5e0
Nguồn:
https://giangtester.com/api-testing-voi-postman-phan-18-validate-json-schema/