2

我的 testng.xml 中有 100 个测试,大多数测试由于时间问题而失败,但是当我分块运行它们时它工作正常

我尝试的一种无效解决方案是将少量测试分成多个 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 中以包方式运行

4

2 回答 2

0

据我所知,您要分批运行测试用例。如果我是正确的,那么这很简单。只需将您的所有测试用例划分为多个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>

我希望它会帮助你。

于 2019-04-14T06:14:01.117 回答
-1

您想按如下方式“分组”您的测试:

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 - 组测试

于 2019-04-12T18:08:50.200 回答