#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>
тег, либо через сервисные загрузчики. Для получения более общей информации о прослушивателях вы, возможно, можете взглянуть на этот мой пост в блоге.