Каковы другие способы установить приоритет тестовых случаев в селене TestNG помимо атрибута priority - PullRequest
0 голосов
/ 29 октября 2019

Предположим, в тестовом классе 10 тестов. Я хочу запустить их в определенном порядке. Я могу использовать атрибут priority, чтобы установить приоритет тестовых случаев. Есть ли другой способ установить приоритет тестовых случаев.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

TestNG использует Приоритет, чтобы «предложить» порядок выполнения, основываясь на приоритете, который вы даете тесту. Это не то же самое, что установка заказа.

Строгий способ установить заказ по определенным тестам - использовать Зависимости теста . Если TestA имеет приоритет = 1, а TestB имеет приоритет = 2, но A зависит от B, тогда TestNG будет запускаться B сначала, игнорируя приоритет, иначе A потерпит неудачу.

Сочетание двух методов даствы чем-то похожи на «порядок выполнения».

Я бы исправил то, что говорит Джефф. Он прав, говоря, что это хорошая практика, чтобы ваши тесты были максимально независимыми друг от друга. Но это всегда верно ТОЛЬКО в модульном тестировании.

Например: у вас может быть набор регрессии, например:

@Test (priority=2)
public void validateAddingMilkToShoppingCart(){
  putMilkInCart();
  validateMilkIsInCart();
}

@Test (priority=1, dependsOnMethods = {"validateAddingMilkToShoppingCart"})
public void validateRemovingMilkToShoppingCart(){
  verifyMilkIsInCart();
  removeMilkFromCart();
  validateCartIsEmpty();
}

В этом сценарии «validateRemovingMilkToShoppingCart» можетимеют более высокий приоритет, потому что Sprint работает над опустошением корзины покупок, или потому что недавно была обнаружена ошибка. Но вам следует только запустить этот тест, если вы можете поместить молоко в корзину в первую очередь, в противном случае вы потратите время и ресурсы на запуск теста, который, как вы уже знаете, провалится на основании предыдущего теста. Кроме того, сделав это, вы получите отчет, который будет выглядеть чище, если вы не смогли протестировать эту функцию из-за ошибки в предыдущем тесте.

Надеюсь, что это ответ на ваш вопрос.

0 голосов
/ 29 октября 2019

Сценарий: у тестовых классов есть один или несколько методов @Test, определенных с приоритетами import org.testng.annotations.Test;

открытый класс MyTests1 {

@Test(priority = 1)
public void test1() {
    System.out.println("test1 from " + getClass().getSimpleName() + " class");
}

@Test(priority = 2)
public void test2() {
    System.out.println("test2 from " + getClass().getSimpleName() + " class");
}

}

Тоже так работает ... @Test public void Test1 () {

}

@ Test (depenOnMethods = {"Test1"}) public void Test2 () {

}

@ Test (depenOnMethods = {"Test2"}) public void Test3 () {

}

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