我试图在@BeforeTest方法中读取excel中的数据并尝试在testNG中的@Test方法中打印相同的数据。我已经在表格中阅读了数据
@BeforeTest
@Parameters({"filePath", "fileName", "sheetName"})
public void readExcel(String filePath, String fileName, String sheetName) throws IOException, EncryptedDocumentException, InvalidFormatException{
// set the file path
File eFile = new File(filePath+"\\"+fileName);
//print the file path
System.out.println("File is at: "+eFile);
FileInputStream inputstream = new FileInputStream(eFile);
// Read and publish extension
String extensionName = fileName.substring(fileName.indexOf("."));
System.out.println("File type is: "+extensionName);
//Read the file
Workbook wb = new XSSFWorkbook(inputstream);
//Read the sheet name
Sheet wbSheet = wb.getSheet(sheetName);
}
我想将wbSheet传递给@Test方法来打印并将数据写入excel。 @Parameters正在寻找在testng.xml中定义的常量。如何传递这样的变量..?
答案 0 :(得分:5)
为什么不使用实例变量?
class YourClassTest {
Sheet wbSheet;
@BeforeTest public void readExcel(...) {
wbSheet = wb.getSheet(sheetName);
}
@Test public void test() {
//you can use wbSheet here
}
}
答案 1 :(得分:0)
我猜想在@BeforeTest中定义和定义的任何变量都可以在@Test中使用。 如果我错了,请纠正我。 下面的示例对我有用:
@BeforeTest
public void getUrl(){
RestAssured.baseURI = envProp.getProperty("HOST_GET");
}
@Test
public void listUsers() {
given().when().get("/maps/...").then().assertThat().statusCode(200);
}
}