Есть ли способ разделить и запустить тестовые тесты на куски вместо полного набора - PullRequest
2 голосов
/ 12 апреля 2019

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

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

Вот как выглядит мой testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite">
    <listeners>
        <listener class-name="baseClasses.TestListener"></listener>
    </listeners>
    <test name="Android">
        <parameter name="platform" value="android"></parameter>
        <classes>
           <class name="testCases.android.VerifyLoginLogout" />
           <class name="testCases.android.test1" /> 
           <class name="testCases.android.test2" />
           ...

           <class name="testCases.android.test100" />
        </classes>
    </test>
</suite>

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

Примечание - даже пробовал с мудрым пакетом запустить внутри testng.xml

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

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

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite">
    <listeners>
        <listener class-name="baseClasses.TestListener"></listener>
    </listeners>


    <test name="Android-1">
        <parameter name="platform" value="android"></parameter>
        <classes>
           <class name="testCases.android.VerifyLoginLogout" />
           <class name="testCases.android.test1" /> 
           <class name="testCases.android.test2" />
           <class name="testCases.android.test3" />
        </classes>
    </test>


        <test name="Android-2">
        <parameter name="platform" value="android"></parameter>
        <classes>
           <class name="testCases.android.test4" /> 
           <class name="testCases.android.test5" />
           <class name="testCases.android.test6" />

        </classes>
    </test>


</suite>

Надеюсь, это поможет вам.

0 голосов
/ 12 апреля 2019

Вы хотите сгруппировать свои тесты следующим образом:

import org.testng.Assert;
import org.testng.annotations.Test;

public class GroupTestExample {
   String message = ".com";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(groups = { "functest", "checkintest" })

   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = ".com";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(groups = { "checkintest" })

   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "tutorialspoint" + ".com";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test(groups = { "functest" })

   public void testingExitMessage() {
      System.out.println("Inside testExitMessage()");
      message = "www." + "tutorialspoint"+".com";
      Assert.assertEquals(message, messageUtil.exitMessage());
   }  
}

и затем запустите определенные группы в вашем наборе:

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

<suite name = "Suite1">
   <test name = "test1">

      <groups>
         <run>
            <include name = "functest" />
         </run>
      </groups>

      <classes>
         <class name = "GroupTestExample" />
      </classes>

   </test>
</suite>

Ссылка: Учебное пособие Точка: TestNG - Групповой тест

...