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

testng中类和方法的并行化

戚正业
2023-03-14

我有一个用例,我必须在一个类下动态运行某些测试方法。

我使用@factory注释动态生成这些测试类。

我已经在上面提到的类下并行运行了我的测试方法。

如何使测试类和测试方法并行?还有什么要做的吗?

public class FactoryClass {

    @Factory
    public Object[] factoryMethod() {
        return new Object[] { new TestClass(), new TestClass() }
    }
}

public class TestClass {

    @DataProvider(name = "firstDataProvider", parallel = true)
    public Object[] firstDataProvider() {
        return new Object[] { };
    }

    @DataProvider(name = "secondDataProvider", parallel = true)
    public Object[] secondDataProvider() {
        return new Object[] { };
    }

    @Test(dataProvider = "firstDataProvider")
    public void firstTestMethod(String arg) {

    }

    @Test(dataProvider = "secondDataProvider")
    public void secondTestMethod(String arg) {

    }
}

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" parallel="methods"  data-provider-thread-count="60">
    <test name="test1">
        <classes>
            <class name="com.amriteya.test.FactoryMain"></class>     
        </classes>
    </test>
</suite>

以下是我的课程布局。

测试中。xml我正在设置parallel=“methods”,但它没有为我提供正确的输出。

共有1个答案

胡弘毅
2023-03-14

不能同时为测试方法和测试类设置并行属性。似乎您需要在套件级别上设置并行测试,在测试级别上设置并行类/方法,下面是testng xml的示例:

<suite name="Suite1" parallel="tests">
    <test name="test1" parallel="methods">
        <classes>
            <class name="FactoryClass"/>
        </classes>
    </test>
    <test name="test2" parallel="methods">
        <classes>
            <class name="FactoryClass"/>
        </classes>
    </test>
</suite>

所有方法都将在唯一的线程中运行。当您想在几组浏览器上并行运行测试时,这种情况很有用。套件级别的并行选项将定义您有两个浏览器池(Chrome和Firefox-您将向测试传递适当的参数),测试级别的并行选项将定义池中有多少浏览器。

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

  • 我试图使用Selenium和TestNG进行测试设计,我将每个@test放在一个单独的类中,并对所有类使用once@beforeSuite&@afterSuite,原因是: 代码易于维护 数据驱动,以便能够选择通过文件运行的类。 案例1类: 注意:如果上面的代码在套件中使用单个运行,它就可以正常工作。 问题是它是否像下面的配置那样并行运行。

  • 请查看testng.xml并建议 我想运行2个类(下面提到),但面临一些挑战,因为它在下面提到的2个场景下显示了一些不稳定的行为。 这些测试类下的方法具有组和优先级 **目标是使用组运行这些测试 Scenario1:当我使用Threadcount=1时; [test name=“autopracticee”parallel=“classes”thread-count=“1”] 以下是行为: 1.1

  • 我有一个testNG方法,如下所示: 我的数据提供程序返回10个元素。我的方法将在一个线程中执行10次。这怎么可能平行?举个例子 我想有5个并行的方法。网络驱动程序应该同时打开5个浏览器。在这5个测试并行后,应执行其他5个测试 或 webdriver应该打开10个浏览器,并并行执行所有10个元素 有人有主意吗?

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