API Testing với Postman (Phần 20) – Cách viết Assertion

Cách viết test mình đã có nhắc đến ở bài 9, nay mình chỉ nhắc lại và bổ sung 1 số thứ nho nhỏ.

I. Test trong postman

  • Nếu bạn muốn lấy thông tin chung của response, bạn lấy từ object pm.response. Ví dụ:
pm.test("response is ok", () => {
    // Check status code
    pm.response.to.have.status(200);

    // Lấy thông tin headers
    pm.expect(pm.response.headers.get("Date")).to.eql("Fri, 26 Mar 2021 13:57:56 GMT");

    // Xem thông tin object pm.response
    console.log(pm.response);
});
  • Nếu bạn muốn lấy thông tin của body trong pm.response, bạn cần phải biến body thành json object, thông qua function json()
pm.test("test body", () => {
    
    // Biến body của response thành json object
    const resData = pm.response.json();

    // Check value của key "dataTest"
    pm.expect(resData.data.dataTest).to.eql("This is expected to be sent back as part of response body.");
    
    // Check type của value
    pm.expect(resData.data.dataTest).to.be.a("string");

});
  • Nếu muốn test các object của array, bạn cần 1 vòng for để có thể duyệt qua từng item của array. Bạn có thể dùng function của lodash _.each(array_name, function) để thực hiện việc for-each, thay vì viết vòng for truyền thống.
pm.test("test array", () => {

    const resData = pm.response.json();
    const arrayData = resData.data;
    
    _.each(arrayData, (item) => {
        pm.expect(item.gender).to.be.oneOf(['male', 'female']);
    })

});

II. Phần mở rộng

  • Nếu bạn muốn skip test, bạn có thể dùng
pm.test.skip("skip test", () => {
    
})
  • Nếu bạn muốn skip test theo điều kiện, ví dụ: json không có field testData
// Khi lấy thông tin của 1 field không tồn tại, sẽ nhận được underfined
(pm.response.json().testData === undefined ? pm.test.skip : pm.test)("test skip if testData is undefined", () => {
        
});
  • hoặc dùng if-else thông thường
if (pm.response.json().testData === undefined){
    pm.test.skip("test skip if testData is undefined", () => {
        return
    })
} else {
    pm.test("test testData", () => {
       
    })
}
  • Bạn có thể viết test vào phần Pre-request mà vẫn hoạt động như bình thường
  • Khi debug bạn có thể dùng String interpolation thay vì dùng String + String
pm.test("check String interpolation", () => {
    let var1 = 30;
    let var2 = "Giang Nguyen";

    console.log(`My name is ${var2} and age is ${var1}`);
})
5 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments