Testng đọc dữ liệu từ excel

Trong bài viết trước của chúng tôi, bạn đã thấy cách sử dụng testNG dataProvider để chạy thử nghiệm selen nhiều lần, hầu hết chúng tôi đã mã hóa cứng mảng 2d để có dữ liệu thử nghiệm, nhưng hầu hết mọi người muốn đọc dữ liệu thử nghiệm từ các nguồn tệp bên ngoài như excel,

Trong bài đăng này, chúng ta sẽ xem cách đọc dữ liệu trang tính excel thành mảng 2d và sử dụng nó với testNG dataProvider và chạy thử nghiệm

Trước tiên hãy có một bảng excel với dữ liệu bên dưới

Testng đọc dữ liệu từ excel

Đối với điều này, chúng tôi sẽ sử dụng phương pháp ExcelReader.java và phương pháp getCellData(int rownum, int colnum) từ bài đăng này để đọc các ô của trang tính [không bao gồm tiêu đề cột hoặc hàng đầu tiên. ]

Thêm nội dung bên dưới vào ExcelReader. java, vì vậy chúng tôi có thể có tất cả các phương thức tiện ích liên quan đến excel và có thể được sử dụng trên toàn bộ khung

 //Excelreader.Java
 
    public int getNoOfRows(){
        return sh.getPhysicalNumberOfRows();
    }

    public int getNoOfColumns(){
        return sh.getRow(0).getLastCellNum();
    }

    public Object[][] to2DArray() throws Exception {
        int noOfRows = getNoOfRows()-1;
        int noOfCells = getNoOfColumns();
        Object obj[][] = new Object[noOfRows][noOfCells];

        for(int i=0; i

Chúng tôi đã thêm 3 phương thức này để thực hiện điều này –

getNoOfRows()
getNoOfColumns()
to2DArray()

trong to2DArray(), chúng ta có 2 vòng lặp for, vòng lặp ngoài dành cho các hàng, vòng lặp trong dành cho cột hoặc các ô của mỗi hàng

Bây giờ, hãy gọi to2DArray() để gán mảng đối tượng cho dataProvider

package testNgLearning.attributes.dataProv;

import excelUtil.ExcelReader;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.time.Duration;

public class DataProv_Excel {
    WebDriver driver;

    @DataProvider(name = "data-set")
    public static Object[][] DataSet() throws Exception {
        //read the jason or excel data

        /*Object[][] obj = {
            {"valid", "standard_user", "secret_sauce"},
            {"invalid", "standard_user", "123"}
            };*/
            
        ExcelReader excel = new ExcelReader();
        excel.setExcelFile("./testdata.xlsx", "Sheet2");
        Object[][] obj = excel.to2DArray();
        return obj;
    }

    @Test(dataProvider = "data-set")
    public void DataProvSampleTest(String type, String username, String password) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "/Users/skpatro/sel/chromedriver");
        System.out.println(type + " " + username + " " + password);
        driver = new ChromeDriver();

        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(3));

        driver.get("https://www.saucedemo.com/");

        driver.findElement(By.id("user-name")).sendKeys(username);
        driver.findElement(By.id("password")).sendKeys(password);
        driver.findElement(By.id("login-button")).click();

        if(type.equals("valid")){
            wait.until(ExpectedConditions.presenceOfElementLocated(
                    By.cssSelector("[class='title']")));
        }else
            wait.until(ExpectedConditions.presenceOfElementLocated(
                    By.cssSelector("[data-test='error']")));

        Thread.sleep(2000);
        driver.quit();
    }
}

Phương thức DataSet() –

Đầu tiên đặt đường dẫn excel và tên trang tính

sau đó gọi tới 2D Array() để lấy dữ liệu excel vào 2D Array

Object[][] obj = excel.to2DArray();

Bây giờ bạn có thể chạy thử nghiệm testng DataProvSampleTest() để chạy thử nghiệm nhiều lần với người dùng hợp lệ, không hợp lệ và bị khóa

Chúng ta hãy nhanh chóng tìm hiểu thêm về DataProvider trong TestNG và cách chúng ta có thể sử dụng chúng một cách hiệu quả trong các tập lệnh thử nghiệm của mình để tự động hóa thử nghiệm Selenium

DataProvider trong TestNG là gì?

Tương tự như Tham số TestNG, DataProviders là phương tiện để truyền dữ liệu tới các tập lệnh kiểm tra trong TestNG. Sử dụng DataProvider trong TestNG, chúng ta có thể dễ dàng đưa nhiều giá trị vào cùng một trường hợp thử nghiệm. Nó được tích hợp sẵn trong TestNG và được sử dụng phổ biến trong các khung dựa trên dữ liệu

Cú pháp của DataProvider trong TestNG như sau

@DataProvider(name = ”tên của nhà cung cấp dữ liệu”)

đối tượng công cộng[][] dataProviderfunc(){

Bây giờ, hãy cố gắng hiểu các thành phần khác nhau của cú pháp này

  • Chú thích DataProvider có một thuộc tính duy nhất được gọi là tên, mà bạn có thể chọn tùy theo sự thuận tiện của mình
  • DataProviders là các phương thức riêng biệt được sử dụng trong các chức năng kiểm tra, điều đó có nghĩa là chú thích này không được sử dụng trên các chức năng kiểm tra như các tham số testNG
  • Phương thức DataProvider trả về danh sách đối tượng 2D
  • Trong trường hợp bạn không định nghĩa tên cho DataProvider thì tên phương thức DataProvider được coi là tên mặc định của nó. Vì vậy, tên của DataProvider gọi phương thức DataProvider

Đọc. Hướng dẫn chú thích TestNG với các ví dụ về tự động kiểm tra Selenium

Với chứng chỉ TestNG, bạn có thể thử thách các kỹ năng của mình trong việc thực hiện kiểm tra tự động với TestNG và đưa sự nghiệp của bạn lên một tầm cao mới

Dưới đây là thông tin ngắn gọn về chứng nhận TestNG từ LambdaTest

Sử dụng DataProvider trong TestNG

Bây giờ bạn đã hiểu những kiến ​​thức cơ bản về DataProviders, đã đến lúc biết cách sử dụng DataProvider trong TestNG. DataProviders hữu ích nhất khi bạn cần chuyển các tham số TestNG phức tạp. Dưới đây là một ví dụ cơ bản về việc sử dụng DataProvider trong tập lệnh TestNG

Trong đoạn mã trên, tôi đang chuyển hai từ khóa tìm kiếm, đó là “Kiểm tra Lambda” và “Tự động hóa” cho phương pháp kiểm tra của tôi bằng phương pháp DataProvider. Bạn có thể chạy mã và kiểm tra đầu ra. Nó sẽ được như hình dưới đây-

Testng đọc dữ liệu từ excel

Testng đọc dữ liệu từ excel

Bạn có nhận thấy hai giá trị được chuyển đến phương thức tìm kiếm trong khi chúng tôi chỉ chạy thử nghiệm một lần không?

Đó là vẻ đẹp của DataProvider. Hãy để chúng tôi cố gắng làm sạch mã của chúng tôi và kế thừa DataProvider này từ một lớp khác. Điều này rất quan trọng vì giữ mọi thứ ở một nơi có thể trở nên lộn xộn. Kế thừa sẽ đến giải cứu chúng ta sau đó, chúng ta hãy xem làm thế nào trong phần tiếp theo

Bạn cũng có thể thích Trình nghe TestNG trong Selenium WebDriver với các ví dụ

Nếu bạn muốn biết thêm về Trình xử lý sự kiện trong Selenium WebDriver, hãy xem video này để tìm hiểu cách Trình xử lý “lắng nghe” sự kiện được xác định trong tập lệnh Selenium và hành xử tương ứng

Testng đọc dữ liệu từ excel

Kế thừa DataProvider trong TestNG

Như đã đề cập ở trên, DataProvider trong TestNG đóng vai trò thiết yếu trong việc viết mã cho các dự án hoặc đối tượng phức tạp. Trong khi viết các trường hợp thử nghiệm, mã có xu hướng trở nên rất lộn xộn. Luôn luôn ưu tiên khai báo trường hợp thử nghiệm trong một lớp và xác định các tham số TestNG như DataProviders trong một lớp khác. Nói cách khác, chúng tôi đang kế thừa DataProvider từ một tệp khác và đó là tất cả những gì kế thừa DataProvider trong TestNG. Hãy để chúng tôi tạo các lớp riêng biệt cho phương thức DataProvider và phương thức kiểm tra, như được hiển thị bên dưới

Lớp DataProvider-

tổ chức nhập khẩu. kiểm tra. chú thích. Nhà cung cấp dữ liệu;

@DataProvider(name = "test-data")

đối tượng tĩnh công khai[][] dataProvFunc(){

{"Thử nghiệm Lambda"},{"Tự động hóa"}

Chúng ta có thể thấy rằng tất cả những gì chúng ta đã làm là đánh dấu phương thức DataProvider là tĩnh và tạo một lớp mới

Lớp kiểm tra-

Như bạn có thể thấy, để xử lý việc thừa kế, tất cả những gì chúng ta làm là thêm một thuộc tính vào phương thức kiểm tra (được đánh dấu ở trên), chỉ định lớp có phương thức DataProvider. Khi chạy thử nghiệm trên, bạn sẽ thấy kết quả tương tự như những gì chúng ta đã thấy trong lần thực hiện đầu tiên

Testng đọc dữ liệu từ excel

Tiếp theo, chúng ta sẽ thấy việc truyền nhiều giá trị cho một tham số TestNG bằng cách sử dụng DataProvider trong TestNG

Testng đọc dữ liệu từ excel

CHẠY KẾ HOẠCH KIỂM TRA CỦA BẠN TRÊN LƯỚI SELENIUM

Hơn 3000 trình duyệt VÀ hệ điều hành

ĐĂNG KÝ MIỄN PHÍ

Truyền nhiều giá trị tham số trong TestNG DataProviders

Việc truyền nhiều giá trị khá giống với việc truyền nhiều tham số. Sự khác biệt duy nhất là chúng ta sẽ chuyển các giá trị khác nhau cho một tham số để một (các) chuỗi đầu vào được gửi trong một lần. Hãy để chúng tôi nhanh chóng hiểu nó với sự trợ giúp của mã

Chạy tập lệnh thử nghiệm và bạn sẽ thấy cả hai giá trị cho tham số TestNG được truyền cùng một lúc, đầu ra cho tập lệnh sẽ như sau-

Testng đọc dữ liệu từ excel

Có thể bạn chưa biết nhưng đây không phải là cách duy nhất để đọc dữ liệu trong DataProviders. Bạn có thể sử dụng các tệp bên ngoài để đọc dữ liệu và chuyển sang tập lệnh kiểm tra thông qua DataProviders; . Tiếp theo, chúng ta sẽ xem cách sử dụng tệp Excel để tìm nạp dữ liệu và sau đó chuyển sang phương thức DataProvider. Không lãng phí thời gian nữa, chúng ta hãy xem cách thực hiện điều này

DataProvider trong TestNG bằng Excel

Sử dụng Excel cho DataProvider trong TestNG là một trong những cách thuận tiện nhất để đọc dữ liệu. Bằng cách đó, công việc của chúng ta trở nên cực kỳ dễ dàng khi xử lý lượng dữ liệu khổng lồ. Để làm như vậy, chúng ta cần làm theo một số bước đơn giản để đạt được mục tiêu sử dụng Excel làm DataProvider

Tạo một bảng dữ liệu thử nghiệm

Chỉ cần tạo một gói mới trong thư mục dự án của bạn và giữ các tệp bên ngoài trong cùng một dự án. Tôi đã đặt tên cho gói của mình là “testData”, theo đó tôi đang lưu tệp excel dữ liệu của mình “TestData. xlsx. ” Vì vậy, bảng dữ liệu của tôi trông giống như bên dưới-

Testng đọc dữ liệu từ excel

Tiếp theo, chúng ta sẽ tạo một phương thức DataProvider sẽ sử dụng một phương thức khác để đọc tệp excel và tạo một đối tượng 2D từ các giá trị hàng & cột của excel và trả về cùng một giá trị, để tập lệnh thử nghiệm của chúng ta có thể sử dụng nó. Mã cho nó sẽ giống như bên dưới-

Sau khi làm như vậy, chúng ta có thể chỉ cần chuyển Nhà cung cấp dữ liệu trong TestNG sang phương thức thử nghiệm của mình và mã cuối cùng của chúng ta sẽ như bên dưới

Bây giờ khi chạy mã này, bạn sẽ thấy kết quả như bên dưới-

Testng đọc dữ liệu từ excel

Sự kết luận

Trong hướng dẫn này, chúng ta đã thấy các tham số hoặc tiện ích TestNG, như DataProviders, cho phép chúng ta thực thi các tập lệnh thử nghiệm của mình dễ dàng như thế nào. Khi chúng tôi có thể có n số kết hợp dữ liệu để kiểm tra, DataProvider trong TestNG có thể được sử dụng mà không gặp rắc rối khi mã hóa cứng bất kỳ giá trị kiểm tra nào trong tập lệnh. Tham số TestNG này đặc biệt hữu ích khi bạn muốn tích hợp các tệp dữ liệu ngoài của mình như tệp Excel vào cùng một mã. Đó là cách DataProvider trong TestNG đóng vai trò quan trọng trong các tập lệnh tự động kiểm tra Selenium. Tôi khuyên bạn nên chạy tất cả các mã trên và kiểm tra đầu ra. Chúng ta cũng phải lưu ý rằng một DataProvider trong TestNG trả về một mảng 2-D, không giống như các tham số TestNG khác. Chúng ta có thể tận dụng các tham số TestNG này để tận dụng tối đa các tập lệnh tự động hóa thử nghiệm Selenium hiện có hoặc tạo tập lệnh mới. LambdaTest giúp bạn thực hiện tự động hóa kiểm tra Selenium cho các tập lệnh TestNG trên lưới Selenium trực tuyến cho sự kết hợp của hơn 3000 trình duyệt và hệ điều hành

Bạn có biết cách tạo tệp XML TestNG và thực hiện kiểm tra Song song không?

Hãy tiếp tục và thử một số chức năng đăng nhập với các tập hợp dữ liệu khác nhau, tất cả được truyền vào một phương thức DataProvider duy nhất của riêng bạn và xem việc thực thi trở nên hiệu quả như thế nào

Selenium có thể tương tác với Excel không?

Excel trong Selenium là một trong những cách kết hợp được sử dụng nhiều nhất để lưu trữ dữ liệu thử nghiệm và sau đó chạy cùng một trường hợp thử nghiệm đối với các tập dữ liệu khác nhau . Có nhiều thư viện khác nhau trong JAVA giúp đọc/ghi dữ liệu từ tệp Excel.

Chúng tôi có thể kiểm tra 10 cột bằng nhà cung cấp dữ liệu không?

DataProvider với số lượng lớn các cột . Trong trường hợp này, có một điểm khó khăn. Chỉ cần xóa tham số nhà cung cấp dữ liệu dsArgs sẽ thu thập tất cả các dòng vào một đối tượng HashMap duy nhất, vì vậy bạn có thể tự động lấy bất kỳ cột nào trong thử nghiệm bằng cách sử dụng tên cột .

Làm cách nào để đọc dữ liệu từ Excel bằng Apache POI?

Việc đọc một tệp excel bằng POI cũng rất đơn giản nếu chúng ta chia thành các bước. .
Tạo phiên bản sổ làm việc từ một trang tính excel
Đến trang tính mong muốn
Tăng số hàng
lặp lại trên tất cả các ô trong một hàng
lặp lại bước 3 và 4 cho đến khi tất cả dữ liệu được đọc

Việc sử dụng DataProvider trong TestNG là gì?

Chú thích @DataProvider giúp chúng tôi viết các trường hợp thử nghiệm theo hướng dữ liệu . Chú thích @DataProvider cho phép chúng tôi chạy một phương thức thử nghiệm nhiều lần bằng cách chuyển các tập dữ liệu khác nhau.