Как запустить один и тот же класс несколько раз, используя селен - PullRequest
0 голосов
/ 15 марта 2020

Можно ли как-нибудь запустить класс 3 или более раз в Selenium . Таким образом, он работает в следующем порядке:

  • method1
  • method2
  • method3
  • method1
  • method2
  • method3
  • method1
  • method2
  • method3
import com.test
Class A{

@Test(priority =1)
public void method1(){`System.out.print('method1');`}

@Test(priority =2)
public void method2(){`System.out.print('method2');`}

@Test(priority =3)
public void method3(){`System.out.print('method3');`}
}

1 Ответ

0 голосов
/ 15 марта 2020

Насколько я знаю, в TestNG нет простого способа сделать это. Параметр аннотации invocationCount работает только на уровне метода, а не на классе, поэтому аннотирование вашего класса с помощью @Test(invocationCount = 3) не работает.

Поскольку вы упоминаете Selenium, я предполагаю, что вы пытаетесь автоматизировать некоторые из них. повторные действия на веб-странице. Если это так, то я думаю, что идеологически вам лучше всего извлечь код из этих трех методов и просто написать другой тест, который вызывает эти внутренние компоненты, например:

@Test(priority = 1)
public void method1() {
    stuff1();
}

@Test(priority = 2)
public void method2() {
    stuff2();
}

@Test(priority = 3)
public void method3() {
    stuff3();
}

@Test
public void complexTest() {
    for (int i = 0; i < 3; i++) {
        stuff1();
        stuff2();
        stuff3();
    }
}
private void stuff1() {
    System.out.print("method1");
}

private void stuff2() {
    System.out.print("method2");
}

private void stuff3() {
    System.out.print("method3");
}

Хорошая практика - рассматривать каждый тест как атом c тест, который может либо провалиться, либо пройти, и, если вы хотите протестировать какой-либо сценарий, который выполняет определенный набор действий три раза, лучше представьте новый тест для этого и сделайте его ясно и явно «рассказывать историю» теста.

...