#java #selenium #log4j #testng
#java #selenium #log4j #testng
Вопрос:
Я хочу записать имя набора тестов перед его запуском. Мне удалось зарегистрировать имена методов, но я не мог понять, как я могу сделать то же самое с наборами. Мой код:
РЕДАКТИРОВАТЬ: я нашел решение. Вот код для тех, кому это нужно.
public class TestCase {
private Logger logger = LogManager.getLogger(this.getClass());
protected static WebDriver driver;
private String url = PropertyManager.getUrl();
private String browser = PropertyManager.getBrowser();
@BeforeSuite
protected void setUp(ITestContext tes) {
System.setProperty("webdriver.chrome.driver","chromedriver.exe");
System.setProperty("webdriver.chrome.logfile", "chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");
driver = new ChromeDriver();
driver.get(url);
driver.manage().window().maximize();
logger.info("Starting up {} driver.", browser);
logger.info(tes.getSuite().getName());
}
Ответ №1:
Это можно сделать, добавив прослушиватель в проект. Используйте IInvokedMethodListener
для выполнения действий перед вызовом предполагаемого метода.
Шаги:
-
Допустим, создайте класс
ListenerClass
и реализуйтеIInvokedMethodListener
в нем интерфейс.public class ListenerClass implements IInvokedMethodListener
-
Добавьте весь нереализованный метод и добавьте приведенный ниже код в
beforeInvocation
метод :@SuppressWarnings("deprecation") @Override public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { try { if (method.getTestMethod().getMethod().getAnnotation(org.testng.annotations.BeforeSuite.class) .toString() != null) { System.out.println("Before suite annoted method name - " method.getTestMethod().getMethodName()); System.out.println("Test suite name - " testResult.getTestContext().getSuite().getName()); } } catch (Exception e) { } }
-
Добавьте класс прослушивателя в свой
testng.xml
файл<listeners> <listener class-name="ListenerClass"></listener> </listeners> <test name="Test_Name"> <classes> <class name="Test_Class_Name" /> </classes> </test> <!-- Test -->
Запустите testng.xml
как TestNGSuite, вы получите ожидаемый результат. Дайте мне знать, есть ли там что-нибудь
Комментарии:
1. Спасибо за ваш ответ. Я получаю ошибку = Корневой элемент документа «слушатели», должен соответствовать корневому типу документа «набор». Я соответствующим образом обновил вопрос и добавил testng.xml также.
2.
<listeners> <listener class-name="ListenerClass"></listener> </listeners>
добавьте это3. Я добавил, но получаю указанную выше ошибку. Куда именно я должен его добавить?
4. Внутри тега набора в XML и не забудьте добавить класс прослушивателя с именем пакета