Как поместить метод i @BeforeTest

#java #excel #selenium #testng-annotation-test

#java #excel #селен #testng-аннотация-тест

Вопрос:

Новичок в selenium / java здесь. 🙂 Пытаюсь понять все о тестовых аннотациях и о том, как использовать метод (он так называется) во всех классах.

У меня есть этот класс ниже, где у меня есть метод, вызываемый в каждом @Test , но я хотел бы поместить как можно больше информации в @BforeTest или сделать это другим разумным способом.

Есть ли у вас какие-нибудь умные идеи, как сделать это разумным способом? Заранее спасибо! С уважением, Фред

КАК ЕСТЬ:

 public class xlsxreadtest {

        @BeforeTest
        public void setup() throws Exception {
        }

        @Test (priority = 1)
        public void Read_xslx1() throws IOException {

        FileInputStream fis = new FileInputStream("./files/Test.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        XSSFSheet sheet = workbook.getSheetAt(0); 
        String text1 = sheet.getRow(2).getCell(1).toString();
        System.out.println(text1);
    }

        @Test (priority = 2)
        public void Read_xslx2() throws IOException {

        FileInputStream fis = new FileInputStream("./files/Test.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        XSSFSheet sheet = workbook.getSheetAt(0); 
        String text2 = sheet.getRow(3).getCell(1).toString();
        System.out.println(text2);
    }

    @AfterTest
    public void afterTest() {
        System.out.println("AfterTest : Driver close");
        driver.close();
    }
}
 

Хотелось бы чего-то подобного, где мне нужно вызывать метод Excel или любой другой только один раз.

 public class xlsxreadtest {

        @BeforeTest
        public void setup() throws Exception {
            FileInputStream fis = new FileInputStream("./files/Test.xlsx");
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheetAt(0);
        }

        @Test (priority = 1)
        public void Read_xslx1() throws IOException {
            
        String text1 = sheet.getRow(2).getCell(1).toString();
        System.out.println(text1);

    }

        @Test (priority = 2)
        public void Read_xslx2() throws IOException {
            
        String text2 = sheet.getRow(3).getCell(1).toString();
        System.out.println(text2);
    }

    @AfterTest
    public void afterTest() {
        System.out.println("AfterTest : Driver close");
        driver.close();
    }
}
 

Ответ №1:

Вы можете сделать свою локальную sheet переменную переменной экземпляра:

 public class xlsxreadtest {
        XSSFSheet sheet;

        @BeforeTest
        public void setup() throws Exception {
            FileInputStream fis = new FileInputStream("./files/Test.xlsx");
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            sheet = workbook.getSheetAt(0);
        }
 

После чего вы можете ссылаться на него из своих методов тестирования:

 @Test (priority = 1)
public void Read_xslx1() throws IOException {
    String text1 = sheet.getRow(2).getCell(1).toString();
    System.out.println(text1);
}

@Test (priority = 2)
public void Read_xslx2() throws IOException {
    String text2 = sheet.getRow(3).getCell(1).toString();
    System.out.println(text2);
}
 

Комментарии:

1. Ах, это просто! Спасибо!

2. Вы можете поблагодарить меня, приняв мой ответ 😉