Selenium: TestNG: тесты не проводятся параллельно - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть простой проект Maven с тремя файлами классов. Когда я запускаю свой файл testng. xml, тесты выполняются последовательно.

Я пытался сохранить параллельные = "классы", параллельные = "методы", параллельные = "тесты", но не повезло. Также пытался изменить версию testng с 6.9.0 на 7.0.0 , но это не сработало.

Ожидание:

Тесты должны выполняться параллельно

Что происходит:

Тесты выполняются последовательно

Ниже мой проект и все файлы:

Тестовый класс: 1

public class TestOne {

private static WebDriver driver;
private static String baseURL;

@Test
public void launch() throws IOException {
    baseURL = "http://www.gmail.com";
    System.setProperty("webdriver.chrome.driver", "path");
    WebDriver driver = new ChromeDriver();
    driver.get(baseURL);
    driver.quit();
    }
}

Тестовый класс: 2

public class TestTwo {

private static WebDriver driver;
private static String baseURL;

@Test
public void launch() throws IOException {
    baseURL = "http://www.gmail.com";
    System.setProperty("webdriver.chrome.driver", "path");
    WebDriver driver = new ChromeDriver();
    driver.get(baseURL);
    driver.quit();
    }
}

Тестовый класс: 3

public class TestThree {

private static WebDriver driver;
private static String baseURL;

@Test
public void launch() throws IOException {
    baseURL = "http://www.gmail.com";
    System.setProperty("webdriver.chrome.driver", "path");
    WebDriver driver = new ChromeDriver();
    driver.get(baseURL);
    driver.quit();
    }
}

TestNG xml:

!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"

suite name="Test" parallel="tests" thread-count="3" data-provider-thread-count="5"

<test name="Launch">
    <classes>
        <class name="test.demo.grid.TestOne" />
        <class name="test.demo.grid.TestTwo" />
        <class name="test.demo.grid.TestThree" />
    </classes>
</test>

Версия:

селен- java = 3.4.0

testng = 6.14.3

================================

Пожалуйста, дайте мне знать, как я могу это исправить.

Спасибо!

Ответы [ 5 ]

0 голосов
/ 10 февраля 2020

добавьте аннотацию @BeforeClass в каждый класс и инициализируйте WebDriver в этом аннотации и закройте драйвер в аннотации @AfterClass для каждого класса

0 голосов
/ 06 февраля 2020

Вы можете попробовать:

      <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

        <suite name="Suite" configfailurepolicy="continue">

        <parameter name="parallelSetup" value="tests" />
        <parameter name="threadsNumber" value="3" />


  <test name="Launch">
    <classes>
        <class name="test.demo.grid.TestOne" />
        <class name="test.demo.grid.TestTwo" />
        <class name="test.demo.grid.TestThree" />
    </classes>
</test>

        </suite> 
0 голосов
/ 06 февраля 2020

Попробуйте сначала простой пример регистрации идентификатора потока для каждого метода тестирования, пока не вызывая ChromeDriver

long id = Thread.currentThread().getId();
    System.out.println("Sample test-method " + testName
            + ". Thread id is: " + id);

https://howtodoinjava.com/testng/testng-executing-parallel-tests/

Если он записал идентификаторы параллельно может быть что-то связано с ChromeDriver

0 голосов
/ 06 февраля 2020

Попробуйте с параллельным = "классами" и без data-provider-thread-count = "5", потому что вы здесь не используете поставщик данных.

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test" parallel="classes" thread-count="3">
<test name="Launch">
    <classes>
        <class name="test.demo.grid.TestOne" />
        <class name="test.demo.grid.TestTwo" />
        <class name="test.demo.grid.TestThree" />
    </classes>
</test>
</suite>
0 голосов
/ 06 февраля 2020
Тег

<test> является единственным в вашем testng.xml, и именно поэтому параллельное выполнение не работает.

В вашем случае вам нужно использовать parallel="classes", и все классы будут выполняться параллельно.

Редактировать:
Вы можете использовать testng. xml как:

<test name="Launch">
    <classes>
        <class name="test.demo.grid.TestOne" />
    </classes>
</test>
<test name="Second test">
    <classes>
        <class name="test.demo.grid.TestTwo" />
    </classes>
</test>
<test name="Third test">
    <classes>
        <class name="test.demo.grid.TestThree" />
    </classes>
</test>

И теперь использовать parallel="tests" в тесте. xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...