Postman nâng cao - Viết Tests cho Postman
Bài đăng này đã không được cập nhật trong 4 năm
Chủ đề lần này của chúng ta là làm thế nào đề viết test script trong Postman, vậy viết script trong Postman để làm gì có nó có lợi ích như thế nào, hãy cùng tìm hiểu trong bài viết hôm nay nhé.
Làm thế nào để tạo TEST trong Postman
Viết TEST trong Postman tương tự như định nghĩa một test case. Trong Postman, chúng ta check bất kỳ điều gì chúng ta cần biết về request. Ví dụ: nếu ta cần biết liệu request của ta có trả về status code là 201 hay không, việc này có thể làm được trong Postman. Ngoài ra, một request có thể được thông qua nhiều test case và tất cả chúng có thể được report cùng lúc trong lúc request hoàn thành.
Phải nhớ rằng, một test trong Postman chỉ chạy khi request thành công. Nếu không có response nào trả về thì thực tế là request của bạn không đúng, chúng ta không thể chạy test thông qua request đó. Ngoài ra, bạn cần biết rằng các test được viết bằng Javascript trong Postman. Mặc dù bạn không cần phải giỏi về code nhưng bạn nên hiểu biết một chút về Javascript vì nó sẽ rất có ích. Trong bài viết này, chúng ta sẽ thử viết Javascript đơn giản nhất và bạn có thể tự viết các test case của mình.
TEST trong Postman có thể được viết theo hai cách là
- Javascript method
- Functional method
Cả hai phương pháp đều được sử dụng trong Postman để viết test và cả hai phương pháp đều sử dụng javascript làm ngôn ngữ cơ sở. JavaScript method là cách cũ hơn trong khi functional method là cách mới. Mặc dù Postman không nói rằng sẽ kết thúc không hỗ trợ javascript method, nhưng khuyến nghị nên sử dụng Functional method như đã nói trên trang chủ của Postman, "Functional method is the more powerful method among the two".
Vì vậy, bây giờ, chúng ta đã viết test đầu tiên của mình.
Làm thế nào để thiết lập test trong Postman với JavaScript method?
- Sử dụng API để tạo user
- Mở tab Tests.
- Viết đoạn mã Javascript sau đây như được viết dưới đây
tests["Status Code is 201"] = responseCode.code === 201
Bây giờ chúng ta sẽ xem qua dòng trên để biết ý nghĩa.
- Tests: Từ đầu tiên chúng ta thấy là "tests", là một biến kiểu mảng. Mảng này có thể chứa bất kỳ kiểu dữ liệu nào như string và integer hoặc thậm chí các giá trị boolean.
- "Status Code is 201": chỉ là một cái tên hoặc một chuỗi đơn giản. Chúng ta đặt tên này để biết test đang thực hiện là gì, do đó tên này phải có ý nghĩa. Nếu ta viết là tests[“Passed”], thì ta sẽ không thể biết ý nghĩa của test case này là gì và điều này cũng sẽ ngày càng trở nên phức tạp hơn nếu chúng ta chạy nhiều hơn một test, chẳng hạn như 20 test và một test không đạt. Bạn cũng có thể viết 'Status code OK'.
responseCode.code
: response code đề cập đến status code của response mà chúng ta đã nhận được trong tab response. Chúng ta có thể chạy nhiều test trong Postman trên một response, chẳng hạn như kiểm tra status code có chuỗi hay không.responseCode.code === 201
là phép so sánh giá trị code của response với giá trị chúng ta mong muốn.
Trong mục dưới tab Tests, những test có giá trị TRUE sẽ hiển thị PASS với tên được đặt ở trên hoặc nếu không thì hiển thị FAIL.
- Nhấp vào Send và xem tab kết quả tab Test Results.
Sau khi chạy, kết quả là test của chúng ta đã pass. Điều này có nghĩa là response nhận được là 200.
- Lưu request trong MyFirstCollection bên trong Myfolder
Bằng cách này, bạn đã thực hiện thành công request đầu tiên của mình với Tests.
Làm thế nào để thêm nhiều test cho một request trong Postman bằng JavaScript method?
Như chúng ta đã làm trước đó, chúng ta có thể sử dụng nhiều test trên một request duy nhất và tất cả các test đó được hiển thị đồng thời trong kết quả. Chúng ta sẽ thực hiện nhiều test trên cùng một request ở trên. Viết code bên trong text editor.
tests["Status Code is 201"] = responseCode.code === 201;
tests["Body contains Fault"] = responseBody.has("Oanh Nguyen1")
tests["Response time less than 500ms"] = responseTime <3000;
LƯU Ý: Test thứ hai kiểm tra xem có chuỗi "Oanh Nguyen1" trong phần body của response hay không và test thứ ba kiểm tra xem thời gian response có nhỏ hơn 3000ms hay không.
Bây giờ hãy nhìn vào kết quả trong Postman, chúng ta có ba test được viết, trong đó một test không đạt là test thứ hai. Vì response body của chúng ta không chứa Oanh Nguyen1. Bằng cách này, chúng ta có thể thực hiện đồng thời nhiều test trong Postman trên một request. Và nhớ lưu request lại.
Test case đầu tiên của chúng ta đã pass vì chúng ta có response status code là 201 và test thứ ba của chúng ta đã pass vì thời gian response của chúng ta là 1082ms, nhỏ hơn 3000. Thời gian response của bạn có thể thay đổi.
Làm thế nào để viết test trong Postman bằng Functional method?
Một Functional method đơn giản để kiểm tra xem response status code có phải là 201 hay không được viết như sau
pm.test("Status code is 201", function () {
pm.response.to.have.status(201);
});
Kiểm tra phương pháp hàm trong Postman
Trong hình trên, công việc giống như chúng ta đã làm trong JavaScript method. chúng ta đang kiểm tra xem status có phải là 201 hay không. Sau đây sẽ giải thích về đoạn code trên:
pm.test
:pm
ở đây đề cập đến Postman api.- Status code is 201: Dòng này chỉ là một string là tên test case. Khi test của bạn được thực hiện, Chuỗi này sẽ được viết ở phía trước kết quả. Nó cũng giống như trong JS method để biết test case là gì
function () {}
: Tham số tiếp theo là hàm được truyền để thực hiện testpm.response
: Biến này được sử dụng để lấy response nhận được và thực hiện các assetion trên nó như status code, headers, v.v. Điều này giống nhưresponseCode
ở JS method.
Đoạn mã mẫu trong Postman để thêm test nhanh
Vì có nhiều lần test được sử dụng theo các request khác nhau và có nhiều request xuất hiện trong một collection nên viết một số code test thường lặp đi lặp lại thường xuyên. Trong Postman, phần này được gọi là Snippets. Đoạn code là được viết trước trong Postman để sử dụng mà không cần viết toàn bộ code. Việc này tiết kiệm rất nhiều thời gian và ngăn ngừa các lỗi có thể xảy ra trong khi viết code theo cách thủ công.
Snippets code được đặt ngay bên cạnh text editor.
Bấm vào Status Code: code is 200
Bây giờ, hãy xem text editor
Đoạn code này giống hệt như đoạn code mà chúng ta đã viết trong một Functional method để kiểm tra response status.
Lưu ý: Vì Postman khuyến khích dùng Functional method hơn, các đoạn code này chỉ có sẵn trong Functional method.
Bạn có thể xem thêm các đoạn code khác nhau để hiểu rõ hơn về code test khác nhau.
Collection runner trong Postman
Một trình chạy collection trong Postman như đã nói ở các bài trước đây được sử dụng để chạy toàn bộ collection cùng nhau. Trình chạy collection chạy tất cả các request trong collection hoặc thư mục (bất cứ thứ gì bạn chọn) cùng một lúc. Collection runner trong Postman không hiển thị bất kỳ respone nào, nó được sử dụng để test các case xem chúng có pass hay không. Bảng điều khiển Collection runner hiển thị tất cả các bài test cùng nhau và kết quả của chúng. Để chạy bộ collection trước tiên hãy đảm bảo rằng bạn có ít nhất hai request trong thư mục MyFolder bên trong MyFirstCollection như hình.
Hai request này là api Get list user và api đăng ký user (chúng ta đã sử dụng nó trước). Hãy nhớ rằng API của user là một request Post nên nó cũng chứa các request body.
Làm thế nào để chạy Collection Runner trong Postman?
Bây giờ chúng ta sẽ xem cách chạy nhiều request cùng nhau trong Postman bằng cách sử dụng Collection Runner.
- Nhấp vào Runner
- Nhấp vào MyFirstCollection và sau đó là MyFolder
Lưu ý: Hy vọng bạn đã lưu các request trong collection như trên
Trong bảng điều khiển, bạn thấy hai tùy chọn:
- Iterations: là số lần các request giống nhau sẽ chạy. Ví dụ: Iterations được đặt là 3 sẽ chạy tất cả các request 3 lần. Hãy đặt nó là 2.
- Delay: là thời gian chờ giữa hai lần lặp lại bất kỳ. Thời gian trễ 10ms sẽ có nghĩa là Postman sẽ đợi 10ms sau khi chạy một lần lặp trước lần lặp thứ hai. Hãy đặt nó là 5ms.
- Nhấp vào Run MyFolder
- Như bạn thấy, tất cả các test với kết quả của chúng đều hiện ra như sau.
- Có hai lần lặp lại mỗi request. Trong lần lặp đầu tiên, tôi nhận được thời gian phản hồi là 260ms lớn hơn 250 ms, điều này gây ra một fail trong test tương ứng đó.
Tham khảo
All rights reserved