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

时间:2015-05-26 04:43:19

标签: java selenium selenium-webdriver testng

我有一个框架,在一个方法中它返回两个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)?

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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或您喜欢的数据结构的数据)。

答案 2 :(得分:0)

如果你使用的是 @DataProvider ,那么它会返回一个2D对象数组,即它一次返回1行,如果你在ur excel中有2行,那么你的测试用例将执行两次,第1次第1次,第2次第2次。如果你需要一个更具体的代码,就像它的工作方式一样,请告诉我..谢谢!

答案 3 :(得分: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;
   }
 }