Как записать имя Test Suite перед сьютом - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу записать имя набора тестов перед его запуском.Я преуспел в регистрации имен методов, но не мог понять, как я могу сделать то же самое с наборами.Мой код:

РЕДАКТИРОВАТЬ: Я нашел решение.Вот код для тех, кому это нужно.

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 Ответ

1 голос
/ 04 апреля 2019

Это можно сделать, добавив Listener в проект.Используйте IInvokedMethodListener для выполнения действий до вызова намеченного метода.

Шаги :

  1. Создайте класс, скажем, ListenerClass и реализуйте IInvokedMethodListener интерфейс в нем.

    public class ListenerClass implements IInvokedMethodListener
    
  2. Добавить все не реализованные методы и добавить следующий код в 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) {
      }
    }
    
  3. Добавьте класс слушателя в ваш 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, и вы получите ожидаемый результат.Дайте мне знать, если что-нибудь есть

...