API Testing với Postman (Phần 29) – Đọc file CSV

Bài viết dựa trên 1 lần support trực tiếp cho học viên sử dụng postman script.

Trước đây mình đã viết 1 bài về việc postman đọc file CSV để làm data-driven test rồi, tuy nhiên bài này sẽ nói về 1 use case hoàn toàn khác. Đó là read file csv để dùng nội dung của cả file CSV này build body cho 1 request mà thôi. Ví dụ:

{
  "BatchNo": "200",
  "Details": [
    {
      "username": "user1",
      "password": "user_1_ex",
      "source": "external"
    },
    {
      "username": "user2",
      "password": "user_2_ex",
      "source": "external"
    },
    {
      "username": "user3",
      "password": "user_3_in",
      "source": "internal"
    }
  ]
}

Trong json này, ta có một array các object, trong mỗi object lại có value khác nhau và những value đó mình lại đang đặt trong 1 file data dạng excel hoặc csv. Hoặc object có rất nhiều key-value khác nhau, chúng ta quá mệt để đặt biến thì đây là 1 giải pháp nhanh gọn hơn.

let parse = require('csv-parse/lib/sync');

const input = `
username,password,source
user1,user_1_ex,external
user2,user_2_ex,external
user3,user_3_in,internal
`.trim();


const options =  {
  columns: true
};
const records = parse(input, options);


let json = JSON.stringify(records);
pm.variables.set("json", json);

Step 1: Import library

let parse = require('csv-parse/lib/sync');

Đây là library mà postman có sử dụng, nên mình chỉ cần lấy ra xài thôi, không cần làm gì thêm. Thư viện này sẽ giúp chuyển đổi (parse) từ định dạng csv sang array cho chúng ta.

Step 2: Điền data định dạng file CSV

Mình assume rằng bạn đã có list data dạng CSV này rồi.

const input = `
username,password,source
user1,user_1_ex,external
user2,user_2_ex,external
user3,user_3_in,internal
`.trim();

Lưu ý:

  • Tên của header sẽ chính là tên của json key mà chúng ta muốn luôn.
  • Mình khai báo 1 biến data type là String và dùng method trim() để xóa khoảng trắng trước và sau. Có thể bạn không biết khoảng trắng đó đâu, thì nó đây.

Step 3: Parse input thành array.

const options =  {
  columns: true
};

const records = parse(input, options);

Mình chỉ cần dùng method parse() với 2 parameters:

  1. Input
  2. Options: các settings mà chúng ta muốn function parse làm theo. Ở trong ví dụ này, mình chỉ dùng 1 setting duy nhất. columns: true thể hiện rằng: data ở đây là kiểu column. Ngoài kiểu column ra thì mình còn 1 kiểu khác, mà chúng ta sẽ theo dõi ở phía sau.

Bạn hoàn toàn có thể viết dạng này luôn:

const records = parse(input, {
  columns: true
});

Step 4: Save output vào biến

let json = JSON.stringify(records);
pm.variables.set("json", json);

records là array nên chúng ta cần biến nó thành String trước khi cho vào json body.

Step 5: Setup request body và xem kết quả


Câu hỏi đặt ra là options kia có bao nhiêu settings và mỗi settings thì làm việc gì?

Nó có rất nhiều settings tuy nhiên nó lại không có document nào cả, chỉ có các examples. Bạn xem list này và tìm đến các file mà có chữ option.xxxx... ấy.

Mình đã đọc hết 1 lượt thì không phải cái nào mà cũng hữu dụng và cần thiết nên mình không viết ra ở đây. Nếu bạn gặp vấn đề khi sử dụng csv-parse này hoặc muốn biết về option nào đó, bạn có thể ping mình.

Vậy thôi, xin chào các bạn. Have a great day. ^^

3 2 votes
Article Rating
Subscribe
Notify of
guest
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
lethihongdiep11395
lethihongdiep11395
2 months ago

Hi anh, ví dụ password bắt buộc phải kiểu number, source là kiểu boolean thì mình sẽ làm như nào anh?