четверг, 27 декабря 2012 г.

Распараллеливание тестов Selenium+TestNG(Junit)

Распараллеливание тестов 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
                    
                
            
        
2.Через Java код:

 TestNG testng = new TestNG();
        List suites = 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
                    
                
            

 Сравним результаты:
Без распараллеливания
При распараллеливании:

Результат очевиден.


Вот собственно и все. Наслаждаемся скоростью.

2 комментария:

  1. Подскажите пожалуйста, где этот testNG.xml отредактировать или его надо самому создать и подключить ? Никак не пойму

    ОтветитьУдалить
    Ответы
    1. В данном примере,testNG.xml это ваш запускаемый suite тестов.
      Я полагаю что у вас он уже есть,тогда в него надо добавить недостающие строки,а если нету,то нужно создать.

      Удалить