我有一个框架,在一个方法中它返回两个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 ,但我不知道如何在上面的代码中使用。
答案 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;
}
}