如何在同一台机器上运行多个硒测试套件

Posted

技术标签:

【中文标题】如何在同一台机器上运行多个硒测试套件【英文标题】:how to run more then one selenium testing suite on the same machine 【发布时间】:2015-12-11 06:41:14 【问题描述】:

我正在使用 Java/Selenium webdriver 和 testng 来运行我的测试自动化,我有很多自动化项目,每个项目都使用一个测试套件.xml,我如何在同一台机器上同时运行两个或更多套件, 这是我创建 driverInstance 对象的代码:

public WebDriver getDriverInstance(
                                    String Url,
                                    String browser ) throws MalformedURLException 

    WebDriver driver = null;
    URL url = new URL( Url );
    if( browser.equals( "firefox" ) ) 
        DesiredCapabilities capability = DesiredCapabilities.firefox();
        driver = new RemoteWebDriver( url, capability );
     else if( browser.equals( "chrome" ) ) 
        DesiredCapabilities capability = DesiredCapabilities.chrome();
        driver = new RemoteWebDriver( url, capability );
     else if( browser.equals( "IE" ) ) 
        DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
        driver = new RemoteWebDriver( url, capability );
    
    return driver;

【问题讨论】:

【参考方案1】:

您需要在 testng xml 中将属性设置为 parallel="tests"

<suite name="Parallel test runs" parallel="tests" thread-count="2">

有“parallel”参数。设置为“测试”,因为我们想并行运行测试。另一个参数是“线程数”。如果设置为 2,则将打开两个浏览器,并从列表中运行前两个测试。如果线程数为 5,则将打开五个浏览器,并且所有五个测试都将并行执行!

对于测试,您的 testng.xml 结构应如下所示:-

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test runs" parallel="tests" thread-count="2">

<test name="T_01">
    <classes>
        <class name="testNG.Parallel.Test01" ></class>
    </classes>
</test>

<test name="T_02">
    <classes>
        <class name="testNG.Parallel.Test02" ></class>
    </classes>
</test>

<test name="T_03">
    <classes>
        <class name="testNG.Parallel.Test03" ></class>
    </classes>
</test>

<test name="T_04">
    <classes>
        <class name="testNG.Parallel.Test04" ></class>
    </classes>
</test>

<test name="T_05">
    <classes>
        <class name="testNG.Parallel.Test05" ></class>
    </classes>
</test>

</suite>

如果你想并行运行 2 个类

<suite name="Parallel test suite" parallel="classes" thread-count="2">

对于类,您的 testng.xml 结构应如下所示:-

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="classes" thread-count="2">
  <test name="Test 1">
    <classes>
      <class name="com.parallel.TestParallelClassOne"/>
      <class name="com.parallel.TestParallelClassTwo"/>
    </classes>
  </test>
</suite>

现在的事情是你需要在同一个项目的不同包中添加两个项目类,并使用我的 1 示例 testng 结构并添加上面的属性。

如何运行两个套件:-

<suite name="allSuites">
  <suite-files>
    <suite-file path="suite1.xml" />
    <suite-file path="suite2.xml" />
    ...
  </suite-files>
</suite>

希望对你有帮助:)

如果仍然遇到任何问题,请回复我 :)

【讨论】:

嗨,Shubham,非常感谢您的回复,所以根据您的回答,我应该编辑的唯一地方是 testng xml 套件?还有我的测试用例根据它们所在的组运行,我可以指定项目名称而不是类名吗?由于每个项目都有自己的依赖项,因此无法将所有类分组到一个组中。 是的,您只需要更改您的 testng.xml 文件。不,据我所知,您无法通过该项目,即使对于组而言,这也取决于如何根据组来构建您的测试用例。 所以没有办法用testng同时运行两个不同的xm套件? 您可以使用两个不同的套件并将它们放在 testng.xml 中。但我从来没有尝试过运行两个套件parrelly ..我已经更新了我的答案。请查看 不,你应该使用类或方法。它给了我类似的错误:-套件级别的属性“并行”的未知值:“套件文件”。

以上是关于如何在同一台机器上运行多个硒测试套件的主要内容,如果未能解决你的问题,请参考以下文章

如何在机器人框架中并行运行多个测试套件上的多个测试用例 | Python

我可以在单机上使用硒网格吗

如何在 3 个不同浏览器中的同一台电脑上并行运行 selenium html 套件?

在同一台机器上同时运行 Master 和 Agent 时,Jenkins 如何操作资源?

历元 - 并行执行(网格)

在同一台开发机器上运行多个 Netty 客户端和服务器