如何在testng中以编程方式传递参数

问题描述 投票:1回答:4

我有一个框架,在一个方法中,它返回两个Excel工作表行:

Row[0]="Name","Age","Location"
Row[1]="Uday","34","India"

这里我按如下方式调用我的TestNG测试用例。

TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { myCls.Class });
testng.run()

但是如何将以上两行数据传递给我的班级(myCls)?

我需要将这些值传递给具有@Test方法的测试用例(例如:myCls类)。

我在TestNG中听说过@ DataProvider,但是我不知道如何在上面的代码中使用。

java selenium selenium-webdriver testng
4个回答
0
投票

尝试从下面的示例中了解

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ExampleTest2 {

@DataProvider(name = "test1")
public Object[][] createData1() {
 return new Object[][] {
   { "Cedric", new Integer(36),"mytest1"},
   { "Anne", new Integer(37),"mytest2"},
 };
}

@BeforeClass
public void before() {
    System.out.println("before");
}

@Test (dataProvider = "test1")
public void testExample2(String s,Integer i,String t) {
    System.out.println("test2:: "+s+" Integer : "+i+" Hello "+t);
}

@AfterClass
public void after(){
    System.out.println("After");
    }
}

请参阅下面的链接以获取更多详细信息。http://testng.org/doc/documentation-main.html#parameters-dataproviders


0
投票

@DataProvider以外,还可以使用Apache POI从excel文件中读取值并在测试中使用它。请参阅下面的示例代码,以从excel文件中读取值。

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFSheet;
//..
FileInputStream file = new FileInputStream(new File("C:\\test.xlsx"));

//Get the workbook instance for XLS file 
XSSFWorkbook workbook = new XSSFWorkbook (file);

//Get first sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);

//get row 0
Row row = sheet.getRow(0);
//get cell 0
Cell cell = row.getCell(0);
//print value of cell
System.out.println(cell.getStringCellValue());

只需在测试中使用单元格值。读取数据后,可以将其存储在ArrayList中并传递它(我的意思是创建一个单独的方法来读取此数据,该方法返回ArrayList或您喜欢的任何数据结构)。


0
投票

如果您使用的是@ DataProvider,则它返回一个2D对象数组,即一次返回1行,如果您的excel中有2行,则您的测试用例将执行两次,第一次第一行和第二次的第二行。如果您需要更具体的代码(例如工作方式),请告诉我。.谢谢!


0
投票

我从您的问题中了解到,您正在读取Java类中的数据,并且想将其传递给testNG类中的测试?它是否正确?如果是,那么有一种更好的方法。您可以创建一个testNG类,将您的测试和数据提供程序添加到同一类中,从数据提供程序中的excel读取数据并将其传递给测试用例。您在数据提供程序中读取的任何数据都必须返回一个Object数组。希望对您有所帮助

 public class NewTestNGClass{

   @Test(dataProvider = "login")
   public void sample(String uname, String passwd) {
       LoginActions.submit_login(uname,passwd);
   }


   @DataProvider(name = "login")
   public Object[][] loginData() {
        Object[][] arrayObject = TestBaseUtil.getExcelData("D://data_xls.xls","user");
        return arrayObject;
   }
 }
© www.soinside.com 2019 - 2024. All rights reserved.