Sử dụng Pre-request Script

QA/QC Oct 06, 2021

Dưới đây là các bước khi gửi 1 request. Phần Pre-request sẽ là phần Postman sẽ xử lý trước khi thực hiện gửi request, và phần test script để xử lý response được trả về.

Vậy Pre-request có thể làm được việc gì? Nó xử lý có mỗi 1 phần thôi đó là tạo dữ liệu (biến) để truyền vào param trong request.

Có 1 chức năng thôi nhưng cực kỳ hữu ích trong các trường hợp khác nhau.

Vi dụ: API Tạo mới và lưu yêu thích một địa điểm trong của dự án Honda Drive Calendar

Param truyền vào bao gồm:

  • Title
  • Name
  • place_google_id
  • address
  • Bài toán 1 : Mong muốn test case tạo nhiều Save Place bằng API , với bài toán trên nếu ta phải tự nhập lại bằng tay mỗi lần run API —> rất mất công sức, nếu không sửa các param trên thì API data của mình sẽ bị trùng và có thể sai
  • ta có thể tạo cùng lúc nhiều Save Place bằng cách tạo ra 1 list array chứa toàn bộ thông tin muốn import vào (mình export từ trong DB ra) rồi lấy random và lưu thành các biến trong Environment.

var myArray = [ {
"title": "place 1",
"name": "name 1",
"place_google_id": "ChIJ5Zv9iCkDNTERuXlAGy3PDT8",
"address": "address 1"
},
{
"title": "place 2",
"name": "name 2",
"place_google_id": "ChIJoRyG2ZurNTERqRfKcnt_iOc",
"address": "address 2"
},
{
"title": "place 3",
"name": "name 3",
"place_google_id": "ChIJV1npfJKsNTERua2DiV81MOI",
"address": "address 3"
}
]

var index = pm.collectionVariables.get("index")
if (index == null) {
index = 0;
}
if(index == myArray.length){
index = 0;
}
var title = myArray[index]["title"];
var name = myArray[index]["name"];
var place_google_id = myArray[index]["place_google_id"];
var address = myArray[index]["address"];
pm.environment.set("title", title);
pm.environment.set("name",name);
pm.environment.set("place_google_id",place_google_id);
pm.environment.set("address",address);
pm.collectionVariables.set("index", index + 1);
pm.environment.get("variable_key");

Với array trên ta chạy api và chạy ra kết quả như sau:

Bài Toán 2: Một bộ test case ta thường viết nhiều case

Ví dụ

  1. Tạo save place thành công ( nhập đầy đủ trường require )
  2. Tạo save place không thành công
  • Bỏ trống trường title
  • Bỏ trống trường place_google_id
  • Case 1: Check case tạo save place thành công

Ở bài toán 1 tôi đã tạo save thành công, nhưng để sử dụng data đó chạy runner thì chúng ta xem được kết quả chạy các data đó có được lưu vào thành công hay không.

Vì vậy tôi đã sử sụng test response để run và check kết quả trả về của từng dòng code ( phần này mình đã giới thiệu team ở bài seminar trước)

pm.test("Check them place vao plan thanh cong", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.success).to.eql(true); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

pm.test("Title thêm thành công", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.data.title).to.eql(pm.environment.get("title")); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

pm.test("name thêm thành công", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.data.name).to.eql(pm.environment.get("name")); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

pm.test("place_google_id them thanh cong", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.data.place_google_id).to.eql(pm.environment.get("place_google_id")); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

pm.test("address them thanh cong", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.data.address).to.eql(pm.environment.get("address")); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

Kết quả trả về

Như vậy ta đã test được case 1: tạo save place thành công và lưu vào data base

Case 2. Bỏ trống trường require . Kết quả mong muốn là không tạo save place thành công và báo lỗi “ユーザー項目は入力必須です。”

Ta cũng sử sụng test response để run và check kết quả trả về:

pm.test("message báo lỗi title require: ユーザー項目は入力必須です。", function () {  // funtion trả về các kết quả thực thi

var jsonData = pm.response.json(); // parse chuyển data trả về từ response

pm.expect(jsonData.message).to.eql("ユーザー項目は入力必須です。"); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không

});

Kết quả sau khi chạy runner:

Như vậy ta đã test được case bỏ trống trường title và đã trả về lỗi thành công

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.