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

如何并行运行testNG en,但用于不同的测试

丁慈
2023-03-14

我正在尝试在不同的Android设备上并行运行我的自动化套件(使用Selenium WebDrive(Java)TestNG Maven实现)。这是我在xml中的代码:

<test name="Test1">
    <parameter name="deviceName_" value="simulator1"/>
    <parameter name="port_" value="4723"/>
    <classes>
        <class name="tests.TotoTests">
            <methods>
                <include name=".*" />
            </methods>
        </class>
    </classes>
</test>

<!--test name="Test2">
    <parameter name="deviceName_" value="simulator2"/>
    <parameter name="port_" value="4725"/>
    <classes>
        <class name="tests.TotoTests">
            <methods>
                <include name=".*" />
            </methods>
        </class>
    </classes>
</test-->

在TotoTest课上,我有20个测试。它们中的每一个都有注释@Test。当我运行xml时,两个设备并行运行类TotoTest。所以我的设备1(模拟器1)运行20个测试,我的设备2(模拟器2)也运行20个测试。

但是我想要的是,模拟器1在TotoTest中运行第一个测试,模拟器2开始在TotoTest中运行第二个测试。当一个设备完成后,它将在TotoTest中运行第三个测试。然后当其中一个设备完成时,它将运行第四次测试。所以要运行20个测试,我只需要一半时间。因为每个设备只会运行10个测试,或者9个测试,或者11个测试......但不是20次测试。

我该怎么做?

共有3个答案

倪风史
2023-03-14
<suite name="TestSuite" parallel="tests" thread-count="2">
  <test name="Test1" preserve-order="true">
    <parameter name="baseURL" value="http://www.amazon.com" />
    <classes>
      <class name="package.myClass" />
    </classes>
  </test>
  <test name="Test2" preserve-order="true">
    <parameter name="baseURL" value="http://www.google.com" />
    <classes>
      <class name="package.myClass" />
    </classes>
  </test>
安博文
2023-03-14

要创建多个线程并并行运行,您必须使用不带线程数的并行。请尝试此修改后的代码:

<suite name="Suite" parallel="tests" thread-count="2" >
<test name="Test1">
<parameter name="deviceName_" value="simulator1"/>
<parameter name="URL_" value="127.0.0.1:4723/wd/hub"/>
<classes>
<class name="tests.TotoTests">
 <methods>    
<include name=".*" />
</methods>
</class>
</classes>

</test> <!—Test 1 -->
<test name="Test2">
<parameter name="deviceName_" value="simulator2"/>
<parameter name="URL_" value="127.0.0.2:4725/wd/hub"/>
<classes>
<class name="tests.TotoTests">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test> <!—Test 2 -->
</suite> <!-- Suite -->

希望它能起作用。

邰昀
2023-03-14

在每次测试时添加参数parallel=true。这可能有用。在上面的xml中,还可以在xml文件中添加parallel=“Class”参数

 类似资料:
  • 我使用下面的TestNG配置来启用Selenium测试的并行执行。 Java代码: 硒测试预计将并行运行。我希望有2个浏览器打开并运行测试脚本。 但我只看到一个浏览器,所有3个测试都一个接一个地运行,而不是并行运行。我尝试过使用“并行”属性的测试、方法、类和实例选项。 有什么帮助吗?

  • Spock规范如下所示: 是一个测试记录列表,对于该列表的每个成员,方法将按顺序运行。我想要的是,列表的前k个成员运行一个线程,下面的k个成员在第二个线程中运行,等等...理论上,使用Executors框架和类(因为Spock依赖于JUnit),这可以相对容易地完成。 然而,问题是如何将更小的注入到具有方法的类中,因为Spock不允许构造函数,而JUnitCore需要类名(具有测试/规范的类),而

  • 我有一套用网格运行的Selenium WebDriver测试。当我运行这个testng.xml文件时: 在我看来,在suite标记中指定parallel=“classes”与TestNG文档是一致的,但不能在单独的类中实现@test方法的异步执行。 为什么。xml文件的这种配置不起作用?我需要做什么不同的工作来使它发挥作用?

  • 我想并行运行我的测试,这样可以节省时间,我确实在宁静中找到了一个选项,我们可以批量运行测试,但不能并行运行,而且cucumber并行似乎很有前途,下面的链接是针对maven项目的,运行宁静-cucumber并行测试用例有任何关于宁静/JS和npm的建议吗?

  • 现在我们有一个项目,包含两个工作。1) 是带有单元测试的标准构建。2) 是集成测试。它们是这样工作的: 构建整个项目,运行单元测试,启动集成测试工作 问题是步骤2)现在需要一个多小时才能运行,我想将集成测试并行化,以便它们花费更少的时间。但我不确定我该怎么做。我的第一个想法是,我可以有两个这样的步骤: 构建整个项目,运行单元测试,启动集成测试工作 构建整个项目,将其部署到integration s

  • 问题内容: 我当前的项目使用NUnit进行单元测试并驱动用Selenium编写的UAT。开发人员通常在VS.Net 2003中使用ReSharper的测试运行器来运行测试,而我们的构建框则通过NAnt启动测试。 我们想并行运行UAT测试,以便我们可以利用Selenium Grid / RC,以便它们能够更快地运行。 是否有人对如何实现这一目标有任何想法?和/或在多个浏览器环境下测试Selenium