Đọc file csv bằng JUnit5

I. Tổng quan về data-driven testing

Khi viết automation test scipt, mọi người hay phải đụng phải case là
nhiều testcase có actions và result giống hệt nhau, chỉ khác nhau data input.
Cách xử lý chung là data-driven testing, có 2 cách chính:

  • Data provider trong file code ( có thể tham khảo ở đây)
  • Data từ file bên ngoài (excel, csv, json…)

Nhưng đọc file excel như bài 23 thì quá lằng nhằng, nặng nề, không linh hoạt.

May mắn là JUnit5 đã đơn giản mọi chuyện bằng việc natively support chức năng đọc csv.

II. Cách đọc file csv trong JUnit5

Điều kiện cần: Bạn đã tự add được thư viện JUnit 5 vào trong project của bạn, có thể add thông qua Maven, Gradle hoặc add trực tiếp.

Maven dependency:

<dependency> 
    <groupid>org.junit.jupiter</groupid> 
    <artifactid>junit-jupiter</artifactid> 
    <version>5.5.2</version> 
    <scope>test</scope>
</dependency>

Gradle dependency:

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}

Cách áp dụng

Có mấy điểm cần lưu ý:

  1. Đặt file cần dùng ở 1 folder trong project. Ở đây, mình đặt ở file ở folder resource của Test.
  2. Bạn cần phải sử dụng annotation @ParameterizedTest
  3. Phải add @CsvFileSource để chỉ ra vị trí của file csv
  4. Trong method sử dụng những parameter nào thì khai báo trong phần parameter. Ví dụ username và password, dưới dạng String.

Trong phần CsvFileSource có 1 vài tham số config, như sau:

  • resources là bắt buộc, đấy là địa chỉ file, có thể đặt đường dẫn tuyệt đối hoặc tương đối. Recommend là đường dẫn tương đối.
  • numLinesToSkip là số dòng sẽ bỏ qua, trong ví dụ mình đặt là 1, để nó không đọc vào title của từng cột, hiện tại đang có giá trị là username và password.
  • delimiter: mặc định là dấu phẩy, bạn có thể thay đổi nếu bạn dùng ký tự khác
  • những cái khác là mặc định, tùy điều kiện mà bạn thay đổi theo.

Ngoài ra, có 1 số điểm mà bạn muốn dùng khi bạn làm với file csv

  • Bạn muốn data của bạn có chứa khoảng trắng (space) —> đặt dấu quote vào 2 đầu của đoạn value
  • Bạn muốn data có cả dấu ” –> đặt 1 dấu ” bên cạnh dấu ” của bạn

III. Tổng kết

Từ ngày vớ được tính năng này của JUnit5, mình đã gần như giã từ TestNG, vì nó làm mình cải thiện được tốc độ viết test rất nhiều. Mình không cần phải định nghĩa ra nhiều file data provider như trước, cảm giác rất hạnh phúc. 😀 Bạn cũng có thể tự tìm hiểu những tính năng mới JUnit 5. Hi vọng bạn sẽ happy với nó.

0 0 votes
Article Rating
Subscribe
Notify of
guest
9 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] Cái cách này mình ko khuyến khích nhé. Hãy dùng chức năng đọc csv của Junit5 thay […]

an
an
3 years ago

mình có cần phải convert file exel sang đuôi csv không vậy bạn? Nếu có thì convert bằng cách nào.

Tien
Tien
3 years ago

làm sao để truyền tuần tự data từ file csv vào để chạy test vậy anh?

Vũ Đạt
Vũ Đạt
3 years ago

em đang có ý tưởng là: đăng nhập vào fb với một list tài khoản mật khẩu đã có sẵn, sau khi đăng nhập thì nó sẽ chuyển sang giai đoạn đi tương tác ( khoảng 30p ) thì tắt rồi sau đó nó lại mở một profile mới lên và lấy thông tin nick thứ 2. rồi vòng lặp cứ thế cho đến nick cuối cùng thì phải làm sao ạ. Anh chỉ giáo giúp em với.

Minh
Minh
2 years ago

Mình dùng tính năng đọc csv của junit này, để lấy data cho method testng duoc ko bạn