有没有办法以块的形式划分和运行testng测试而不是全套

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法以块的形式划分和运行testng测试而不是全套相关的知识,希望对你有一定的参考价值。

我的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文件

注意 - 甚至尝试使用package wise在testng.xml中运行

答案

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

我希望它会对你有所帮助。

另一答案

您希望按如下方式“对”测试进行“分组”:

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>

参考:Tutorials Point: TestNG - Group Test

以上是关于有没有办法以块的形式划分和运行testng测试而不是全套的主要内容,如果未能解决你的问题,请参考以下文章

以块的形式处理比物理内存大得多的数据

如何在ios中将数据以块的形式写入磁盘

以块的形式保存位图图像

python 在Quantopian中创建一个管道实例并以块的形式运行以避免内存过载。包括管道的常见导入。

.net core web api - 如何以块的形式返回表结果

有啥方法可以分块而不是完整地划分和运行 testng 测试