如何将变量从BeforeTest传递给Test annotation

时间:2015-12-15 15:23:48

标签: java annotations testng

我试图在@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中定义的常量。如何传递这样的变量..?

2 个答案:

答案 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);
}
}