Nội dung bài viết
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 ý:
- Đặt file cần dùng ở 1 folder trong project. Ở đây, mình đặt ở file ở folder resource của Test.
- Bạn cần phải sử dụng annotation @ParameterizedTest
- Phải add @CsvFileSource để chỉ ra vị trí của file csv
- 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ó.
[…] 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 […]
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.
Tất nhiên là phải convert thì Junit5 nó mới đọc được. Bạn mở excel file và Save as –> chọn loại csv.
làm sao để truyền tuần tự data từ file csv vào để chạy test vậy anh?
Việc đọc tuần tự junit5 xử lý rồi mà em.
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.
1. Việc đọc thông tin dòng 1,2,3 lần lượt đã có junit làm cho bạn, như mình đã hướng dẫn trong bài. Còn do actions và close browser là việc của bạn, bạn tự tham khảo các bài khác, mình đã viết rồi.
2. Fb ko đơn giản thế đâu. Hãy làm thử và cảm nhận nhé bạn.
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
Ko đc bạn ơi, junit và testng không chạy cùng được với nhau. Mình cũng có thể viết 1 bài đọc csv cho TestNG nếu bạn cần nhưng ko hẹn trước khi nào sẽ viết.
—–
Update:
Mình đã viết xong bài đọc file csv cho TestNG https://giangtester.com/bai-6-doc-file-csv-cho-testng/