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

Phần trước mình đã viết về test Response, nay mình sẽ tiếp tục viết về Pre-request. 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.
Ví dụ: Mình có 1 API tạo ra 1 chuyến đi giống kiểu grab và uber, gồm các param dưới đây.

 

  • _user_id
  • _token
  • Source
  • Destination
  • Departure_datetime

 

Thêm 1 chút requirement:
_user_id  : có được sau khi login
_token : có được sau khi login
Source: Địa điểm xuất phát
Destination: Địa điểm đến
Departure_datetime: Thời gian xuất phát của chuyến đi luôn lớn hơn thời điểm hiện tại. (Lưu ý: thời gian của Nhật sớm hơn VN 2 tiếng, nếu VN là 15h thì ở Nhật là 17h).

Thời gian đầu khi mình test API này, thì mình chỉ tạo được 2 biến _user_id _token sau khi run API login rồi sử dụng phần Test Script để lưu response lại. Các bạn có thể đọc lại bài trước để hiểu thêm.

Còn 3 biến Source, Destination, Departure_datetime mình 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 ko sửa các param trên thì API của mình sẽ sai.

Giả sử hôm nay ngày 09 /10 / 2017, mình chạy API đúng, nhưng sang ngày mai (10 /10/ 2017) mình lại phải đi sửa 1 đống API vì sai ngày. T_T Mình đã bị như thế trong 1 thời gian, cho đến khi mình biết cách sử dụng Pre-Request.

Xử lý Departure_datetime

Mình viết ra 1 hàm getToday để đảm bảo lúc nào run Testcase cũng trả về ngày hôm nay mà không cần phải maintain sửa lại API.

Các bạn có thể sẽ nghĩ là mình giỏi tự nghĩ ra cái hàm đấy :)))) Không phải đâu, các bạn chỉ cần google “Method getToday javascript”. Sau đó, mình chỉ sửa code 1 chút để có thể lấy được giờ random mà mình muốn. Cuối cùng là lưu biến đó vào Environment là xong.

Xử lý Source, Destination

Về bản chất, cả 2 param này đều điền giá trị là địa điểm, nhưng mình không thể chỉ test với 2 địa điểm được, nó sẽ tạo ra 1 đống các chuyến đi giống hệt điểm đến và điểm đi. Mình cần 1 lượng lớn các địa điểm rồi mình sẽ lấy random cho phần Source, Destination.

Mình tạo ra 1 cái array chứa toàn bộ địa điểm (mình export từ trong DB ra) rồi lấy random và lưu thành 2 biến trong Environment.

Ví dụ:

var myArray = [  {
   “source” : “Tokyo, Japan”
 },
 {
   “source” : “Gifu Prefecture, Japan”
 },
 {
   “source” : “Aichi Prefecture, Japan”
 },
 {
   “source” : “Tokyo Disney Resort, Urayasu, Chiba Prefecture, Japan”
}
]

var source = myArray[Math.floor(Math.random() * myArray.length)][‘source’];
var destination = myArray[Math.floor(Math.random() * myArray.length)][‘source’];
postman.setEnvironmentVariable(“source”, source);
postman.setEnvironmentVariable(“destination”, destination);


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:

pm.environment.set(“source”, source);
pm.environment.set(“destination”, destination);


Do cái array của mình rất nhiều nên mình chỉ chụp hình minh họa thôi.

Sau khi hoàn thành hết mình sẽ có 1 API với các tham số động, linh hoạt, chứ ko phải là những API với dữ liệu cố định.

Mình mới dùng phần Pre-request ở mức này thôi, nếu bạn nào có cách nào hay hơn hãy chia sẻ cho mình. Và nếu bạn nào có bất cứ câu hỏi gì, hãy comment xuống bên dưới. 😀

API Testing với Postman (Phần 11) – Xây dựng API Document

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

  1. Pingback: API Testing với Postman (Phần 9) – Test Response | GiangTester Blog

  2. Anh ơi, em vẫn theo dõi bài viết về API, rất hay và bổ ích, ngoài ra anh có thể làm thêm về jmeter để test hiệu năng được không anh.

    • Hi bạn,
      Thực ra thì mình chưa có điều kiện áp dụng những kiến thức mình biết về test performance nên mình không dám viết gì cả vì kiến thức mảng đó cần nhiều kinh nghiệm chứ ko còn nằm ở vài cuốn sách. Nếu bạn muốn tìm hiểu thêm về Jmeter thì có thể đọc ở: https://jmetervn.com/ nhưng mà cũng viết bằng tiếng anh. 😀
      Tks vì bạn vẫn luôn theo dõi blog của mình ^^

      • Hi, thực ra em có áp dụng một chút cho những dự án cũ nhưng thực sự để hiểu chuyên sâu là cả vấn đề, nếu có cơ hội em vẫn mong chờ một ngày nào đó anh sẽ viết về chủ đề này. Thanks anh.

        • Anh cũng mong được tham gia những dự án có yêu cầu test performance để tăng kiến thức. 🙂 nếu có cơ hội, anh sẽ viết về chủ đề ấy.
          Mong là từ giờ đến lúc ấy, thi thoảng em vẫn ghé qua blog. 😀

  3. Camr owCcảm ơn bạn Giang nhé. Series API testing này của bạn rất hữu ích với người chưa biết chi như mình. leave a cmt động viên bạn hãy làm thêm những thứ khác nhé

Leave a Reply

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