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

 

24 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

  8. Cho em hỏi là response trả về nhiều giá trị như vậy, ví dụ chuỗi json trả về có tầm 50 cái key thì mình phải check từng key hay có cách nào khác không ạ, với làm thế nào để mình đọc log của api đó để test không ạ?

    • Hi em,
      – Anh đâu có nói là phải check hết tất cả các giá trị đâu nhỉ? Tùy vào em thôi, muốn check nhiều thì check nhiều, còn anh thì chỉ check 2-3 thứ mà quyết định test đấy pass hay fail, chứ ko check nhiều.
      – Anh ko hiểu cái Log API mà em nói là cái gì, em có ví dụ ko?

      • Hi anh,

        E cảm ơn ạ, nhưng do dự án e làm có case sẽ check hết toàn bộ các giá trị trả về nên e hơi rối.
        Về log là ví dụ khi e call API, thì nó sẽ xử lý như sau:
        -Xuất log “Start xử lý ABC”
        – Tiến hành xử lý trong nội dung api, ví dụ lấy dữ liệu
        – Xuất log “lấy dữ liệu ABC thành công”.
        – Xuất log “kết thúc xử lý ABC”
        – Return json
        thì e muốn hỏi là kiểm tra nội dung file log sẽ có 3 message là “Start xử lý ABC”, “lấy dữ liệu ABC thành công” và “kết thúc xử lý ABC” ạ.
        Cảm ơn anh.

        • Hi em,
          – Log là nhằm mục đích debug đâu phải là đối tượng của test, nếu em phải test cả log thì phải asscess file Log bằng cách connect tới server hoặc tự build ở local (nếu có source code) rồi tự call API ở local rồi check log.
          – “dự án e làm có case sẽ check hết toàn bộ các giá trị trả về nên e hơi rối.” –> code tay to thôi em. 😀

  9. Pingback: API Testing với Postman (Phần 12) – Run Test Suites từ Runner | GiangTester Blog

Leave a Reply

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