Параллельный запуск тестов TestNG, Maven

selenium
java
testng
webdriver
Теги: #<Tag:0x00007f7b649fd1c0> #<Tag:0x00007f7b649fcfe0> #<Tag:0x00007f7b649fce78> #<Tag:0x00007f7b649fcce8>

(Alexey Bes) #1

Добрый день, видел уже подобную тему на форуме, но не нашел там решение проблемы.
Я хочу запустить два теста параллельно. Сделал файл testng.xml

 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Custom suite" verbose="1">
     <test name="TestParallel" parallel="methods" thread-count="2">
         <classes>
             <class name="GoogleTest">
         </class></classes>
     </test>
 </suite>```

И сами тесты:

``public class GoogleTest {

  public WebDriver driver;

 @BeforeMethod
 public void setUp()  {
     System.setProperty("webdriver.chrome.driver", "c:\\Documents and Settings\\adlchara\\IdeaProjects\\Sel\\libss\\chromedriver.exe");
     driver = new ChromeDriver();
     driver.manage().window().maximize();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 }

 @Test
 public void testRobert() {
     driver.get("http://google.ru");
     driver.findElement(By.name("q")).sendKeys("Роберт — Википедия");
     driver.findElement(By.xpath(".//*[@id='sblsbb']/button")).click();
     driver.findElement(By.linkText("Роберт — Википедия")).click();
 }
 @Test
 public void testPolson() {
     driver.get("http://google.ru");
     driver.findElement(By.name("q")).sendKeys("Полсон");
     driver.findElement(By.xpath(".//*[@id='sblsbb']/button")).click();
     driver.findElement(By.linkText("Полсон, Генри — Википедия")).click();
 }

 @AfterMethod
 public void tearDown() {
     driver.quit();
 }

}``

Статики нет, но тест выполняется только в одном браузере и кириллица пишется в таком виде "РоберС". Пробовал писать разные варианты testng.xml но все равно не решил проблему.

#2

Проблема заключается в том, что каждый паралельный метод не знает сессию WebDriver которая ему принадлежит (вызывается до метода). Вы создаете 2 сессии но кому какая не говорите :smile:

Можно инициализировать драйвер в самом методе.

Или как вариант распаралеливать так

<suite name="TestSuite" thread-count="2" parallel="tests" > <test name="Test1"> <classes> <class name="GoogleTest"> <methods><include name="testRobert" /></methods> </class> </classes> </test> <test name="Test2"> <classes> <class name="GoogleTest"> <methods><include name="testPolson" /></methods> </class> </classes> </test> </suite>


(Taras) #3

или ThreadLocal поможет


(Alexey Bes) #4

Спасибо, второй вариант помог,а с объявлением драйвера, что-то не получилось. А на счет кодировки не знаете в чем может быть проблема? При запуске тестов с IDE все нормально на кириллице пишется, а при запуске через Maven пишется в таком виде “Р РѕР±РµСЂС”


#5

(Alexey Bes) #6

Спасибо! Помогло.


(Andrey Melnichenko) #7

добрый день всем, проблема та же - пытаюсь распаралелить запуск тестов но по классам и не получается, подскажите куда копать
вот проект


(Kosmos) #8
  1. Код, конечно, трешовый, не удобно читать.
  2. Так и не увидел, где и что именно пытаетесь запараллелить.

(Михаил Братухин) #9

Код, как код. Бывает и хуже. Хотя и выглядит местами жутковато. Правда, я смотрел бегло и на самом гитхабе и не особо глубоко закапывался. Желания тянуть его к себе на свой или рабочий ПК не было никакого. Не стал проверять пароли и учетки от почты, не думаю, что хранить их и другие вещи в открытом доступе - хорошая идея.

Странно, что вы цените своё время меньше, чем владелец этого кода. Мне кажется или при заведении дефектов есть требование о минимальном необходимом, но достаточном количестве действий для стабильного воспроизведения. Почему же тогда automation QA не придерживаются этого правила? Они недостаточно QA для этого? У меня есть такой знакомый, который 100 мб логи за целые сутки в zip-архив сжимал и на почту скидывал, типа там где-то был дефект.