Параллельный запуск с использованием testng

#selenium-webdriver #testng

#selenium-webdriver #testng

Вопрос:

Я пытаюсь выполнить параллельный запуск с использованием testng. я пытаюсь запустить тест 4 раза параллельно. Но он выполняется только один раз.

testng.xml

 <suite name="My suite" parallel="methods" thread-count="4">
  <test name="Default test" group-by-instances="true">
    <classes>
      <class name="org.com.DemoClass"/>
    </classes>
  </test> <!-- Default test -->  
</suite> <!-- Default suite -->
  

Демонстрационный класс.

 public class DemoClass {    
    @Test
    public void method1() throws InterruptedException {
        long id = Thread.currentThread().getId();
        System.out.println("Before test-method. Thread id is: "   id);
    }
}
  

Пожалуйста, предоставьте свое ценное предложение.

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

1. Добавление количества потоков не означает, что ваш метод тестирования будет выполняться несколько раз. Это означает, что для выполнения доступно несколько потоков. В вашем случае у вас есть только один метод в одном тесте, который будет выполнен только один раз. К аннотации @Test добавьте параметр innvocationCount. Прочитайте документацию — testng.org/doc/documentation-main.html#parallel-running

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

Ответ №1:

Вы можете попробовать добавить параметры в @Test аннотацию: @Test(threadPoolSize = 4, invocationCount = 4) Это вызовет ваш тест четыре раза из 4 разных потоков.

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

1. Но это будет применяться только к 1 тестовому сценарию. Предположим, у меня есть несколько тестовых наборов, тогда я должен добавить параметры ко всем моим тестовым наборам. Если мне нужно увеличить / уменьшить количество запусков для всех тестовых наборов. тогда изменения будут большой задачей.

Ответ №2:

Если вам нужно, чтобы каждый из написанных вами аннотированных методов @Test выполнялся «n» количество раз (параллельно или в последовательном порядке) без необходимости явного добавления invocationCount атрибута самостоятельно, вам следует использовать IAnnotationTransformer, с помощью которого вы можете на лету изменять значения вашего @Test аннотированного метода. Вы можете попробовать внедрить этот прослушиватель либо через файл пакета, используя <listeners> тег, либо через сервисные загрузчики. Для получения более общей информации о прослушивателях вы, возможно, можете взглянуть на этот мой пост в блоге.