Используйте TestNG dataProvider с depenOnGroups, чтобы установить порядок выполнения - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть несколько тестовых случаев, которые зависят друг от друга.Порядок выполнения может быть определен в TestNG с использованием groups и disabledOnGroups в аннотации @Test:

public class MyTest {
    @Test(groups = { "group1" })
    public void testCase1() {
    }

    @Test(groups = {"group2"}, dependsOnGroups = { "group1" })
    public void testCase2() {
    }

    @Test(groups = {"group2"}, dependsOnGroups = { "group1" })
    public void testCase() {
    }

    @Test(groups = { "group3" }, dependsOnGroups = { "group2" })
    public void testCase4() {
    }
}

Но я хочу его динамически только с одним @Test метод и @DataProvider, который дает мне группу и зависимости.

public class MyTest {

    @Test(dataProvider = "test-cases", groups = {testCase[1]}, dependsOnGroups  = {testCase[2]})
    public void executeTest(TestCase testCase) throws Exception {
    }

    @DataProvider(name = "test-cases", parallel = true)
    public Object[][] getTestCases() {
        Object[][] testdata = new Object[...][...];
        // Fields: test name, group, depends on, test data 
        testdata[0] = {"TC#1", "group1", "",       "foo data"};
        testdata[1] = {"TC#2", "group2", "group1", "bar data"};
        testdata[2] = {"TC#3", "group2", "group1", "bzz data"};
        testdata[3] = {"TC#4", "group3", "group2", "frr data"};
        return testdata;
    }

}

К сожалению, этот подход не работает, так как testCase [1] не может быть доступен из аннотации @Test(..., groups = {testCase[1]}, ...).

Существует ли другой подход для включения тестов, управляемых поставщиком данных, вфиксированный заказ?

1 Ответ

1 голос
/ 26 сентября 2019

Основываясь на ваших комментариях и редактировании, я думаю, что вы хотели бы получить данные во все ваши методы и запускать их в порядке их появления в вашем классе.

Вы можете использовать следующий подход и testng.xml с preserve-order="true", чтобы запустить тест на основе данных.Обратите внимание, что вам может потребоваться удалить groups и dependsOnGroups, как показано ниже.

public class MyTest {

    @Test(dataProvider = "test-cases")     
    public void testCase1(Object[][] obj) {
        //access obj to get data
    }

    @Test(dataProvider = "test-cases")
    public void testCase2(Object[][] obj1) {
    //access obj1 to get data
    }

    @Test(dataProvider = "test-cases")
    public void testCase(Object[][] obj2) {
     //access obj2 to get data

    }

    @Test(dataProvider = "test-cases")
    public void testCase4(Object[][] obj3) {
         //access obj3 to get data
    }
}

вот ваш testng.xml, который должен запускать его в том порядке, в котором они отображаются

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="yourSuiteName" >

    <test name="FirstScenario_1" preserve-order="true">

        <classes>  
         <class name="yourPackage.MyTest" >
               <methods> 
                  <include name="testCase1" />
                  <include name="testCase2" /> 
                  <include name="testCase" />
                  <include name="testCase4" />
               </methods> 
        </classes>
    </test>
</suite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...