API Testing với Postman (Phần 9) – Test Response

Test response là tính năng đặc biệt quan trọng với những người test API. Làm sao có thể suốt ngày run từng cái request rồi check từng kết quả trả về một cách thủ công được, phải có cách gì nhanh hơn chứ 😀

Phần này cung cấp 2 tính năng cực hay giúp người test đẩy nhanh được tốc độ test API.

  1. Check tự động kết quả trả về của từng field với 1, 2 dòng code, rất dễ, không cần biết code cũng làm được.
  2. Lưu giá trị của Response thành biến trong Environment để tiếp tục truyền vào param của API tiếp theo.

Postman cung cấp một khung làm việc để ta có thể làm việc, chỉ hỗ trợ ngôn ngữ Javascript thuần, không hỗ trợ jquery hay các thứ khác nhé. Và nó không có chế độ debug hay có console đâu. 😀 → Nếu muốn biết chắc code mình chạy đúng, hãy viết trước ở ngoài nhé.

Phần ở bên phải là tập hợp những cú pháp Postman cung cấp sẵn cho người dùng, khỏi cần phải nghĩ. Ok vào bài toán cụ thể nhé.

Bài toán 1:
Tôi có 1 API login, tôi muốn biết là sau khi login vào xong, user_id của tôi trả về có đúng hay không.

Bước 1Chạy thử API 1 lần để lấy được cấu trúc Response của API.

Ta có thể thấy user_id nằm ở vị trí: root > data > user > profile > id và trong trường hợp này id của user này là 401.

Bước 2: Viết Test

Code:

var jsonData = JSON.parse(responseBody);
tests[“Check user id”] = jsonData.data.user.profile.id === 401;

1: Parse cái Reponse trả về và lưu vào biến “jsonData” → cái này chính là root đã viết ở trên.

2: Test xem user_id có bằng 401 không.
Cách lấy giá trị hoàn toàn giống như trong Javascript thôi. Bạn có thể đọc thêm ở đây về cách xử lý Object của Json. http://goessner.net/articles/JsonPath/

Bước 3: Sau khi viết xong Test thì các bạn run Request lại rồi ngó xem phần Test của mình có đúng không.

Theo kết quả thì Test của mình đang Fail, á đù, mình viết đúng rồi mà nhỉ. 🙁

Đây là điểm mà các bạn mới làm sẽ hay gặp, đó là vấn đề ngay tại cái công cụ giúp mình test. Trong trường hợp này, đó là giá trị trả về nó là 1 String, mình không thể so sánh String và Int được. Hãy ngó lại cái ảnh phía trên, bạn sẽ thấy id là “401”, ta chỉ cần thêm dấu nháy kép vào lại phần test của mình là xong.

Code đúng sẽ là:
var jsonData = JSON.parse(responseBody);
tests[“Check user id”] = jsonData.data.user.profile.id === “401”;


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:

var jsonData = pm.response.json();
pm.test(“Check user_id”, function () {

  pm.expect(jsonData.data.user.profile.id).to.eql(“401”);
});

 


Bài toán 2:
Tôi có 1 API login, sau khi login tôi muốn lưu lại giá trị của token để làm data cho những API tiếp theo.

Vẫn dùng ví dụ ở trên, ta sẽ thấy vị trí của token là: root > data > token.

Ta sẽ viết thêm 1 code vào phía dưới 2 dòng code mình đã viết ở trên:

var jsonData = JSON.parse(responseBody);
tests[“Check user id”] = jsonData.data.user.profile.id === “401”;
postman.setEnvironmentVariable(“token”, jsonData.data.token);


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:

var jsonData = pm.response.json();
pm.test(“Check user_id”, function () {

  pm.expect(jsonData.data.user.profile.id).to.eql(“401”);
});
pm.environment.set(“token”, jsonData.data.token);


Sau đó, ta chỉ run lại rồi kiểm tra trong Environment thôi.

Khi đã lưu được biến vào trong Environment rồi thì phần gán biến vào request sẽ giống với phần mình đã hướng dẫn ở bài trước.

Vậy thôi, phần sử dụng Test của Postman chỉ đơn giản thế thôi. Mình biết là 1 bài thì không thể nói hết được, nhưng mà cũng xử lý được 2 phần quan trọng. Nếu làm theo mà có vướng mắc thì hãy để lại comment nhé.

API Testing với Postman (Phần 10) – Pre-request Script

 

19 thoughts on “API Testing với Postman (Phần 9) – Test Response

  1. Pingback: API Testing với Postman (Phần 8) – Environments | GiangTester Blog

  2. Anh ơi, em confirm chỗ này ạ.
    Em có 2 api là A và B. Sau khi lấy được respose từ A thì gán biến thế nào vào B được ạ

  3. Với token luôn thay đổi ở mỗi lần nhảy vào một page thì việc gán Test như trên sẽ thế nào ạ? Nếu token là 1 chuỗi varchar quá dài thì postman sẽ cắt kí tự, nó thông báo như hình này: http://prntscr.com/hbitij ==>có cách nào resolve không ạ

    • Việc check token là ko cần thiết vì token sai thì các api tiếp theo sử dụng cái token đó cũng ko hoạt động. Nếu muốn check token thì phải mở DB để so sánh thôi.

  4. Pingback: Cách test API như thế nào? | GiangTester Blog

  5. Anh ơi, anh giúp em cái này với ạ.
    Ví dụ: em có 1 api token trả về body như thế này:
    {
    “errorCode”: 0,
    “data”: {
    “value”: “abcZYw…i”
    },
    “errorMsg”: null
    }
    Value của api token sẽ gán vào header có param và value lần lượt như sau:
    Authorization: SyncFC {{value}}
    Em đã viết vào phần Test trong api token như sau:
    var jsonData = pm.response.json();
    pm.environment.set(“token”, jsonData.data.value);
    Và nhấn buttton Send trong postman. Nó báo error như sau ạ:
    http://prntscr.com/iwceac
    ==>fix thế nào để gán token vào environment thành công ạ

  6. Hi anh, em có làm theo steps của anh, mà tại em chưa test API nên cũng chưa có url cụ tỉ, có mấy cái url local anh đang làm í, thì em có thể config ntn để có thế làm theo guilde như mấy series này của anh ạ :). Thanks

  7. Pingback: API Testing với Postman (Phần 14) – Những lưu ý khi code API test | GiangTester Blog

Leave a Reply

Your email address will not be published. Required fields are marked *