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 bài viết
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.
- 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. Kh value có thể là 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
Muốn biết thêm nhiều kỹ thuật nữa, hãy đăng ký lớp postman script!
III. Tổng kết
Thực ra thì schema còn khá nhiều thứ phức tạp và loằng ngoằng, thiết nghĩ mình cũng không cần thiết đến mức đó, dừng lại ở mức cơ bản, kiểm tra type và required fields chắc cũng đủ rồi. Nếu bạn thấy hứng thú, muốn tìm hiểu thêm thì vào đây.
bài viết hay admin ơi
Cảm ơn bạn
Bài viết rất hữu ích. Cám ơn anh Giang
Thanks em!