Использование приоритета Test-ng при использовании поставщиков данных - PullRequest
0 голосов
/ 09 ноября 2018

Я использую провайдер данных с test-ng и хочу, чтобы конкретный тест выполнял последовательность шагов для каждого из элементов в объекте сбора данных.

Тест:

For each element in the object, validate the form can input the values

Таким образом, процесс имеет следующее:

  1. Открытие веб-страницы (из данных)
  2. Проверкаесли элемент существует на странице
  3. Введите значения

Я попытался использовать следующее ниже, однако, для каждого из элементов в объекте выполняется шаг 1, а затем перемещаетсяна шаге 2 после, а не после процесса.Поэтому я спрашиваю, возможно ли выполнить «шаг теста», используя test-ng?

Если в Data есть 2 значения, он выполнит Open дважды, а затем продолжитдо CheckElementExists

@Test (priority = 1, dataProvider = "Data")
public void Open(Data data) throws InterruptedException
{ 
    System.out.println("Step 1");
    this.module.open(data);
}

@Test (priority = 2, dataProvider = "Data")
public void CheckElementExists(Data data)
{
   System.out.println("TWO");
}

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

В этом случае вы можете использовать Фабричный класс.

public class TestCase {
    Data data;

    @Factory(dataProvider = "Data")
    public TestCase(Data data){
        this.data=data;
    }

    @Test(priority = 1)
    public void Open() throws InterruptedException {
        System.out.println("Step 1");
        this.module.open(data);
    }

    @Test(priority = 2)
    public void CheckElementExists(Data data) {
        System.out.println("TWO");
    }
}

Вы должны указать group-by-instance = true в своем XML-файле комплекта testng и запустить с использованием xml suite

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Suite New"  group-by-instances="true" configfailurepolicy="continue" preserve-order="true">
   <test name="Test Case">
      <classes>

         <class name="com.package.TestCase"></class>

      </classes>
   </test>
</suite>   
0 голосов
/ 09 ноября 2018

Согласно вашему тесту, он работает нормально, потому что тесты разработаны таким образом. Согласно вашему сценарию, каждый шаг является шагом, и вы также устанавливаете приоритет. поэтому он выполняется первым для всех данных и вторым шагом для всех данных. это похоже на стиль BDD. Вы можете попробовать любой BDD-фреймворк, такой как огурец, jbehave и т. Д.

Если вы хотите повторить все шаги для каждого из данных, используя testng. Затем объедините все шаги в одном тесте, затем выполните итерации по данным, используя поставщик данных, как показано ниже.

@Test (priority = 1, dataProvider = "Data")
public void OpenAndCheck(Data data) throws InterruptedException
{ 
    System.out.println("Step 1");
    this.module.open(data);
    System.out.println("TWO");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...