Распараллеливание тестов Selenium+TestNG(Junit)
Думаю полезность распараллеливаня тестов вполне понятна,тесты которые выполняются последовательно около 20 минут, в несколько потоков выполнятся быстрее в разы.
Я покажу как это сделать при помощи TestNG(и Junit)+Maven+SeleniumWD.
Допустим у нас есть 2 теста (не прикапываемся к написанию,это для примера)
@Test public void testRobert() throws Exception { driver.get("http://google.ru"); driver.findElement(By.name("q")).sendKeys("Роберт"); driver.findElement(By.id("gbqfb")).click(); driver.findElement(By.linkText("Роберт — Википедия")).click(); } @Test public void testPolson() throws Exception { driver.get("http://google.ru"); driver.findElement(By.name("q")).sendKeys("Полсон"); driver.findElement(By.id("gbqfb")).click(); driver.findElement(By.linkText("Полсон, Генри — Википедия")).click(); }
Если решим распараллелить их через TestNG,то добавим методы выполняющиеся перед и после каждого теста.
@BeforeMethod public void setUp() throws Exception { driver = new FirefoxDriver(); } @AfterMethod public void tearDown() throws Exception { driver.quit(); } }
И testng.xml делаем такого вида:
Теперь собственно сам запуск.
1.Через Maven:
org.apache.maven.plugins maven-surefire-plugin 2.12.3 TestNG.xml
TestNG testng = new TestNG(); Listsuites = Lists.newArrayList(); suites.add("TestNG.xml"); testng.setSuiteThreadPoolSize(2); testng.setTestSuites(suites); testng.run();
Если используем Junit, то в Maven указываем:
org.apache.maven.plugins maven-surefire-plugin 2.12.4 methods 2 org.apache.maven.surefire surefire-junit47 2.12.4
Сравним результаты:
Без распараллеливания
При распараллеливании:
Результат очевиден.
Вот собственно и все. Наслаждаемся скоростью.
Подскажите пожалуйста, где этот testNG.xml отредактировать или его надо самому создать и подключить ? Никак не пойму
ОтветитьУдалитьВ данном примере,testNG.xml это ваш запускаемый suite тестов.
УдалитьЯ полагаю что у вас он уже есть,тогда в него надо добавить недостающие строки,а если нету,то нужно создать.