当前位置: 首页 > 知识库问答 >
问题:

TestNG类并行运行,但方法不并行。如何配置testng.xml文件和测试类,使方法也并行运行?

微生曾琪
2023-03-14

我有一套用网格运行的Selenium WebDriver测试。当我运行这个testng.xml文件时:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="20">
  <test name="Test">
    <classes>
      <class name="testcases.test1"/>
      <class name="testcases.test2"/>
      <class name="testcases.test3"/>
      <class name="testcases.test4"/>
      <class name="testcases.test5"/>
      <class name="testcases.test6"/>
      <class name="testcases.test7"/>
      <class name="testcases.test8"/>
      <class name="testcases.test9"/>
      <class name="testcases.test10"/>
      <class name="testcases.test11"/>
      <class name="testcases.test12"/>
      <class name="testcases.test13"/>
      <class name="testcases.test14"/>
      <class name="testcases.test15"/>
      <class name="testcases.test16"/>
      <class name="testcases.test17"/>
      <class name="testcases.test18"/>
      <class name="testcases.test19"/>
      <class name="testcases.test20"/>
      <class name="testcases.test21"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
public class sampleTestClass {
    @BeforeClass
    public void setup(){
        //setup Remote WebDriver
    }
    @Test
    public void method1(){
        //do things
    }
    @Test(dependsOnMethods = "method1")
    public void method2(){
        //do things
    }
    @Test(dependsOnMethods = "method2")
    public void method3(){
        //do things
    }
    @AfterClass
    public void teardown(){
        //call teardown
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySuite" parallel="tests" thread-count="20">
  <test name="First Test">
    <classes>
       <class name="testcases.test1"/>
    </classes>
  </test>
  <test name="Second Test">
    <classes>
       <class name="testcases.test2"/>
    </classes>
  </test>
  <test name="Third Test">
    <classes>
       <class name="testcases.test3"/>
    </classes>
  </test>
  <test name="Fourth Test">
    <classes>
       <class name="testcases.test4"/>
    </classes>
  </test>
  <!--<test name="Fifth Test">
    <classes>
       <class name="testcases.test5"/>
    </classes>
  </test>-->
  <test name="Sixth Test">
    <classes>
       <class name="testcases.test6"/>
    </classes>
  </test>
  <test name="Seventh Test">
    <classes>
       <class name="testcases.test7"/>
    </classes>
  </test>
</suite>

在我看来,在suite标记中指定parallel=“classes”与TestNG文档是一致的,但不能在单独的类中实现@test方法的异步执行。

为什么。xml文件的这种配置不起作用?我需要做什么不同的工作来使它发挥作用?

共有1个答案

梁丘权
2023-03-14

在具有多个方法的webdriver测试类的上下文中,假定该类中有一个webdriver实例,我不知道如何在方法之间同时共享一个webdriver实例。我认为它必须一次调用一个方法,这样每个方法都可以使用webdriver实例。否则,您似乎会得到某种并发异常。

我曾多次尝试使用TestNG获得并行方法,但从未成功。在源代码中有一个例子,但这可能是一个线索;只需查看同一个文件夹中的testng.xml。

 类似资料:
  • 这是驱动程序类,它将为每个测试方法创建驱动程序实例。

  • 我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。

  • 问题内容: 我正在尝试使用testng并行运行自动化测试(Selenium webdriver)。这是我正在运行的节点: 这是我的测试课: } 这是我的xml: 当我运行XML时,我希望我的测试一次在两个线程中的两个浏览器上运行,但是,当我运行XML时,我使两个浏览器实例第一次运行,然后它们分别递增,并且50%测试失败了,您可以看到我正在尝试在每个方法中实例化驱动程序,尽管这不是我的框架如何工作,

  • 为了减少测试的运行时间,我希望并行运行测试。我有几个不能并行运行的类。 假设我有两种类型的类:-并行类-包含类1,类2-不并行类-包含类3,类4我想并行运行类1和类2到类3和类4(但lass3不会并行运行到类4) 我试图这样做: 我并行运行这两个测试,但只有第一个测试具有类的并行性。 如果我可以选择添加parallel=“classes”进行测试,我尝试在TestNG文档中搜索。我看不到,但它正在

  • 我正在试验如何与maven surefire和testng并行运行测试。然而,配置似乎不是很简单,我无法让它工作。下面是我的虚拟测试。 这是我的surefire配置: 测试基本上是按顺序运行的。以下是日志作为证据: 我的意图是并行运行所有测试(直到方法级别)。那么,我该如何实现呢?