TestNG - странное поведение - PullRequest
0 голосов
/ 09 января 2019

Меня немного смущает это поведение testNG.

Рассмотрим этот простой комплект testNG. Test2 зависит от Test1. Приведенный ниже набор также запускает Test2 только после Test1, и это здорово!

<suite name="testng-behvaior" parallel="none">

    <test name="test1">
        <parameter name="browser" value="chrome" />
        <classes>
            <class name="com.test.Test1" />
            <class name="com.test.Test2" />
        </classes>
    </test>

</suite> 

Вышеуказанный пакет работает без проблем.

Но подумайте об этом. Согласно документации testNG, все <test> будут назначены другому потоку. Так как у меня есть только один <test>, только один поток выполняет этот набор, и это нормально. Но он начинается с Test2 до Test1.

   <suite name="testng-behvaior" parallel="tests">

        <test name="test1">
            <parameter name="browser" value="chrome" />
            <classes>
                <class name="com.test.Test1" />
                <class name="com.test.Test2" />
            </classes>
        </test>

    </suite> 

Для меня - в вышеупомянутых случаях parallel="tests" и parallel="none" не должны иметь никакого значения и вести себя одинаково.

Что заставляет testNG вести себя по-другому? Как мне получить поток для выполнения <classes> в последовательности <test> по порядку?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

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

   <suite name="testng-behvaior" parallel="tests">

        <test name="test1" parallel="none"> <!-- we do not want parallel here -->
            <parameter name="browser" value="chrome" />
            <classes>
                <class name="com.test.Test1" />
                <class name="com.test.Test2" />
            </classes>
        </test>

    </suite> 
0 голосов
/ 10 января 2019

Существует атрибут с именем preserve-order. По умолчанию этот атрибут имеет значение true как на уровне <test>, так и на уровне <suite>.

При включении этого атрибута TestNG загружает классы в том же порядке, как определено в теге <test>, а затем запускает все методы @Test, определенные в каждом из них.

Но чтобы этот атрибут работал, вам нужно отключить параллелизм, т. Е. Вам нужно установить атрибут parallel в none.

Только тогда TestNG выполнит тесты в том порядке, в котором они находятся в теге <test>.

То есть parallel="tests" равно НЕ РАВНО parallel="none"

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