Validate json schema
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."
Tham khảo: 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.
- 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.
II. Cách thực hiện
- 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:
- 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);
});
URL cho bạn muốn thử: https://run.mocky.io/v3/79fd4165-de48-41d9-bfab-822ce724a5e0
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.
Phân biệt và sử dụng các loại variables
I. Cách sử dụng các loại biến trong postman script
Trong postman có nhiều loại biến với các mục đích khác nhau, bạn nên biết những function cơ bản với những loại biến này để viết script được nhanh và pro hơn.
- BIẾN GLOBAL
# GLOBAL
Goals Nhiều mục đích, chủ yếu để quick test, và tất cả các request đều có thể sử dụng.
Set pm.globals.set(‘myVariable’, MY_VALUE);
Get pm.globals.get(‘myVariable’);
Remove pm.globals.unset(‘myVariable’);
Clear pm.globals.clear();
- BIẾN COLLECTION
# COLLECTION
Goals Dùng lúc nào thì dùng. Haizz nói chung mình không nghĩ ra tác dụng. T_T. Chỉ có sử dụng với các request nằm trong 1 collection
Set pm.collectionVariables.set(‘myVariable’, MY_VALUE);
Get pm.collectionVariables.get(‘myVariable’);
Remove pm.collectionVariables.unset(‘myVariable’);
Clear pm.collectionVariables.clear();
- BIẾN ENVIRONMENT
# ENVIRONMENT
Goals Dùng riêng cho các môi trường khác nhau của app, có thể lưu các biến mà khác nhau ở mỗi môi trường như URL, username/password, hoặc các data mà dùng cho các request tiếp theo.
Set pm.environment.set(‘myVariable’, MY_VALUE);
Get pm.environment.get(‘myVariable’);
Remove pm.environment.unset(‘myVariable’);
Clear pm.environment.clear();
Show pm.environment.name
name
- BIẾN LOCAL
Biến này chỉ khởi tạo khi ấn request bắt đầu và clear toàn bộ khi finish khi request kết thúc.
# LOCAL
Goals Chỉ dùng trong vòng đời của 1 request
Set pm.variables.set(‘myVariable’, MY_VALUE);
Get pm.variables.get(‘myVariable’);
Remove pm.variables.unset(‘myVariable’);
Clear pm.variables.clear();
- BIẾN ITERATION
Đọc thông tin từ file data dạng csv hoặc json.
# DATA
Goals Chỉ work khi dùng với chức năng đọc file data từ CSV hoặc JSON file từ Runner hoặc Newman
Get pm.iterationData.get(‘myVariable’);
II. Cách lấy giá trị các biến Dynamic
Một thời gian dài trước đây, team postman nhận rất nhiều phản hồi của người dùng về việc thêm thư viện để fake data vào trong postman. Và cuối cùng, team postman đã thỏa mãn người dùng bằng việc cho thêm vào postman rất nhiều biến dynamic, có nghĩa là dummy data mỗi lần run. Ví dụ mỗi lần run, mình lại có 1 random ip.
- CÁCH GỌI BIẾN BÊN NGOÀI SCRIPT
Sử dụng cú pháp:
{{$ten_bien}} // Ví dụ: {{$randomIP}}
Ví dụ: III. Tổng kết
Trong postman, có rất nhiều loại biến với scope khác nhau, các bạn có thể thử và tìm cho mình những cách sử dụng thích hợp để có thể sử dụng postman một cách linh hoạt.