Как создать потокобезопасный настраиваемый HTML-результат в Testng

1

Я изучаю селенную сетку и тест.

Я пытаюсь создать персонализированный результат html с помощью интерфейсов testng. мое понимание того, как создавать html-результаты, отлично подходит для одного запуска машины.

Но когда я обрабатываю удаленные машины, я не могу понять, как результаты консолидируются, если тесты выполняются параллельно в удаленных машинах?

Любые факторы следует рассмотреть перед внедрением моих собственных интерфейсов?

Любая помощь приветствуется.

заранее спасибо

Теги:
multithreading
testng
selenium-grid

1 ответ

1
Лучший ответ

Он отлично работает, из многопоточных тестов в HTML-отчет, потому что ITestResult всегда один и тот же, независимо от того, что вы делаете. Вы можете просто создать класс "CustomReport", который расширяет IReporter. Затем переопределите метод generateReport и просто дайте TestNG создать и передать эти два аргумента в него:

@Override
public void generateReport( List<XmlSuite> xml, List<ISuite> suites, String outdir ) 
{
    for ( ISuite thisSuite: suites ) {
       thisSuite.getResults(). ...
       ...
    }
    ....

Затем внутри этого метода сделайте все, что хотите, чтобы настроить отчет и создать таблицы HTML или что угодно.

Кроме того, одна вещь, которую я делаю (чтобы уменьшить путаницу в выводе консоли при запуске многопоточных тестов), записывает имя потока в сообщения в отчете TestNG, используя что-то вроде:

public void logIt( String message ) {
  Reporter.log( "Thread-" + Thread.currentThread().getId() + ": " + message, true );
}

TestNG является удивительным, особенно когда вы понимаете, что я сказал выше, а также тот факт, что вы неявно разрешаете TestNG передавать XMLTest или ITestContext или ITestResult некоторым из методов @Configuration. Например:

@BeforeClass
public void setUp( ITestContext context ) {
    logger.info("BeforeClass setUp...");
    suiteParams = context.getSuite().getXmlSuite().getAllParameters();
    ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню