Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Priority в TestNG не работает вместе с dependsOnMethods


(booch) #1

Здравствуйте, вопрос по TestNG

Все тесты на проекте имеют зависимости друг от друга и выполняются с использованием атрибута dependsOnMethods в анатации @Test для каждого тестового метода. Есть ситуации когда несколько тестов зависят от одного общего, но порядок их выполнения должен быть строго определен. Для этого я попытался добавить атрибут priority, но ничего не вышло. Вот например:

   @Test()

   public void testA() {
       System.out.println("A");
   }
 
   @Test(dependsOnMethods={"testA"}, priority = 1)
   public void testB() {
       System.out.println("B");
   }
 
   @Test(dependsOnMethods={"testA"}, priority = 0)
   public void testC() {
      System.out.println("C");
   }

На выходе получаю

A

B

C

А ожидаю

A

C

B

потому, что у метода C приоритет выше чем у B

Без dependsOnMethods атрибут Priority работает корректно.

Пробовал последнюю версию на сегодняшний день testng-6.8 и testng-6.9beta

Заранее спасибо за любые дельные советы :)

 

 


Замена assert на мягкую проверку verify в TestNG
(Mykhailo Poliarush) #2

я попробовал на своей версией 6.3.1

работает, как надо. Предлагаю или запостить им баг, или взять предыдущую версию библиотеки.

 

package dependings;

import org.testng.annotations.Test;

public class Test3 {
@Test()
public void test0() {
System.out.println(“0”);
}

<span style="color: rgb(128, 128, 48);">@</span>Test<span style="color: rgb(128, 128, 48);">(</span>dependsOnMethods <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 0, 128);">{</span> <span style="color: rgb(0, 0, 230);">"test0"</span> <span style="color: rgb(128, 0, 128);">}</span><span style="color: rgb(128, 128, 48);">,</span> priority <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 140, 0);">3</span><span style="color: rgb(128, 128, 48);">)</span>
<span style="color: rgb(128, 0, 0); font-weight: bold;">public</span> <span style="color: rgb(187, 121, 119);">void</span> test1<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 128);">{</span>
    <span style="color: rgb(187, 121, 119); font-weight: bold;">System</span><span style="color: rgb(128, 128, 48);">.</span>out<span style="color: rgb(128, 128, 48);">.</span>println<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"1"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 0, 128);">;</span>
<span style="color: rgb(128, 0, 128);">}</span>

<span style="color: rgb(128, 128, 48);">@</span>Test<span style="color: rgb(128, 128, 48);">(</span>dependsOnMethods <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 0, 128);">{</span> <span style="color: rgb(0, 0, 230);">"test0"</span> <span style="color: rgb(128, 0, 128);">}</span><span style="color: rgb(128, 128, 48);">,</span> priority <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 140, 0);">2</span><span style="color: rgb(128, 128, 48);">)</span>
<span style="color: rgb(128, 0, 0); font-weight: bold;">public</span> <span style="color: rgb(187, 121, 119);">void</span> test2<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 128);">{</span>
    <span style="color: rgb(187, 121, 119); font-weight: bold;">System</span><span style="color: rgb(128, 128, 48);">.</span>out<span style="color: rgb(128, 128, 48);">.</span>println<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"2"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 0, 128);">;</span>
<span style="color: rgb(128, 0, 128);">}</span>
<span style="color: rgb(128, 128, 48);">@</span>Test<span style="color: rgb(128, 128, 48);">(</span>dependsOnMethods <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 0, 128);">{</span> <span style="color: rgb(0, 0, 230);">"test0"</span> <span style="color: rgb(128, 0, 128);">}</span><span style="color: rgb(128, 128, 48);">,</span> priority <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">)</span>
<span style="color: rgb(128, 0, 0); font-weight: bold;">public</span> <span style="color: rgb(187, 121, 119);">void</span> test3<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 128);">{</span>
    <span style="color: rgb(187, 121, 119); font-weight: bold;">System</span><span style="color: rgb(128, 128, 48);">.</span>out<span style="color: rgb(128, 128, 48);">.</span>println<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"3"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 0, 128);">;</span>
<span style="color: rgb(128, 0, 128);">}</span>    

}

Результат получается вот таким вот:

 

[TestNG] Running:
  C:\Users\test\AppData\Local\Temp\testng-eclipse--65309967\testng-customsuite.xml
 
0
3
2
1
PASSED: test0
PASSED: test3
PASSED: test2
PASSED: test1

(booch) #3
Интересно, я где то читал что это общая проблема TestNG что он не может одновременно работать с priority и dependsOnMethods. Рад что это возможно.
Тем не менее я скачал 6.3.1, попробовал ваш пример, но вывод опять неправильный :(
0
1
2
3
 
Запускаю через Ant и xml файл (удалил все лишнее для этого теста)
 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Custom Test">
   <test name="Custom Test for Custom browser">
      <classes>
          <class name="com.BrowserHMI.Test3" />
      </classes>
   </test>
</suite>
 
В папке с либами оставил только версию 6.3.1, при запуске анта видно, что в classpath'е используется версия testng-6.3.1.jar
 

(Mykhailo Poliarush) #4

странно!

а попробуйте тесты запустить без анта. 

что получиться?

я запускал тесты из еклипса, возможно проблема в связке с ант.


(booch) #5
разобрался!
 
я для веб тестирования использую selenium-server-standalone-2.25.0.jar, почему то с этой версией приоритеты не работают как надо (странно, это же библиотека селениума а не тестнг)
 
тем не менее после обновления до 2.28.0 все заработало отлично и через ant и через testng (включая последнюю версию) с консоли и с плагина эклипса
 
спасибо что подтолкнули в провильном направлении! :)