Chào các bạn đã đến với chủ để tiếp theo của mình. Ở topic trước, chúng ta đã tìm hiểu về test response. Hôm nay, chúng ta sẽ tiếp tục tìm hiểu về Pre-request. Vậy, Pre-request là gì? Nói 1 cách đơn giãn nó là phần chuẩn bị data trước khi thực hiện send 1 request, bước này cũng giống như tạo một pre-condition trước khi chạy 1 test case.
Thứ tự chạy của một request bình thường:
Khi bạn bấm Send, request sẽ được gởi đi và nhận lại kết quả trả về, sau đó sẽ kiểm tra nội dung ở phần Tests.
Thứ tự chạy của một request có Pre-request scripts:
Khi bạn bấm Send, Postman sẽ thực hiện các bước bên trong Pre-request scripts trước sau đó gởi request, nhận lại kết quả trả về và kiểm tra nội dung ở phần Tests.
Ví dụ: Mình có 1 API tạo ra 1 chuyến đi giống kiểu grab và uber, gồm các param dưới đây.
- _user_id
- _token
- _source
- _destination
- _departure_datetime
Thêm 1 chút requirement:
- _user_id : có được sau khi send login request
- _token : có được sau khi send login request
- _source: Địa điểm xuất phát
- _destination: Địa điểm đến
- _departure_datetime: Thời gian xuất phát của chuyến đi luôn lớn hơn thời điểm hiện tại.
Thời gian đầu khi mình test API này, thì mình chỉ tạo được 2 biến _user_id và _token sau khi run API login rồi sử dụng phần Test Script để lưu response lại
Còn 3 biến _source, _destination, _departure_datetime mình phải tự nhập lại bằng tay mỗi lần run API —> rất mất thời gian, nếu ko sửa các param trên thì API của mình sẽ bị sai.
Giả sử hôm nay ngày 17/01/2023, mình chạy API đúng, nhưng sang ngày mai (18/01/2023) mình lại phải đi sửa 1 đống API vì sai ngày. Mình đã bị như thế trong 1 thời gian, cho đến khi mình biết cách sử dụng Pre-Request.
Xử lý Departure_datetime
Để xử lý cho phần này, mình sẽ viết 1 hàm get current day để đảm bảo lúc nào run Testcase cũng trả về ngày hôm nay mà không cần phải maintain sửa lại API.
Cuối cùng là lưu biến đó vào Environment là xong.
Xử lý Source, Destination
Về bản chất, cả 2 param này đều điền giá trị là địa điểm, nhưng mình không thể chỉ test với 2 địa điểm được, nó sẽ tạo ra 1 danh sách các chuyến đi giống hệt điểm đến và điểm đi. Mình cần 1 lượng lớn các địa điểm rồi mình sẽ lấy random cho phần Source, Destination.
Mình tạo ra 1 cái array chứa toàn bộ địa điểm (mình export từ trong DB ra) rồi lấy random và lưu thành 2 biến trong Environment.
Ví dụ:
var myArray = [ {
"source" : "Tokyo, Japan"
},
{
"source" : "Gifu Prefecture, Japan"
},
{
"source" : "Aichi Prefecture, Japan"
},
{
"source" : "Tokyo Disney Resort, Urayasu, Chiba Prefecture, Japan"
}
];
var source = myArray[Math.floor(Math.random() * myArray.length)]['source'];
var destination = myArray[Math.floor(Math.random() * myArray.length)]['source'];
postman.setEnvironmentVariable("source", source);
postman.setEnvironmentVariable("destination", destination);
UPDATE:
Postman thay đổi 1 số built-in functions nhưng các functions cũ vẫn chạy ngon, nên nếu bạn muốn dùng các functions mới thì đây:
pm.environment.set("source", source);
pm.environment.set("destination", destination);
Sau khi hoàn thành hết mình sẽ có 1 API với các tham số động, linh hoạt, chứ ko phải là những API với dữ liệu cố định.
Nguồn:
https://giangtester.com/api-testing-voi-postman-phan-10-pre-request-script/