使用TestNG来提交Selenium测试 - 但不是并行

时间:2012-09-21 20:06:27

标签: selenium testng selenium-webdriver

这是我的第一个问题,我很乐意得到帮助。

我一直在使用TestNG作为我框架的一部分。 我今天遇到的问题是关于testng.xml配置 - 不要并行运行测试。不,我的测试都不依赖,它们都是独立的。但是,这是我的要求。

我的testng.xml文件如下所示:

<suite name="Smoke Test Suite" verbose="3"  parallel="tests" thread-count="2">      
<test name="Run on Firefox" preserve-order="true">
    <parameter name="browser"  value="firefox"/>
    <classes>
        <class name="com.test1"/>   
        <class name="com.test2"/>
        <class name="com.test3"/>
        <class name="com.test4"/>           
    </classes>
</test> 
<test name="Run on IE9" preserve-order="true">
    <parameter name="browser"  value="iexplore"/>
    <classes>
        <class name="com.test1"/>   
        <class name="com.test2"/>
        <class name="com.test3"/>
        <class name="com.test4"/>           
    </classes>
</test> 
<test name="Run on Google Chrome" preserve-order="true">
    <parameter name="browser"  value="chrome"/>
    <classes>
        <class name="com.test1"/>   
        <class name="com.test2"/>
        <class name="com.test3"/>
        <class name="com.test4"/>           
    </classes>
</test> 

我希望测试以并行方式运行,但是要一个接一个地运行的类。 我目前看到的是,当测试被启动时,我有8个FF,IE9和Chrome实例打开。如何配置它以便执行“test1”,关闭浏览器,打开新实例然后运行“test2”等等?

我必须这样做的原因是,我的应用程序在每次测试期间都打开了多个窗口。 IE9(它是邪恶的浏览器)不知道如何处理这种情况,恐慌和失去对测试中途窗口的关注。有人建议,我也发现了同样的事情 - 最好让一个IE9实例运行而不打扰它。

将非常感谢您的建议和解决方案。

注意:所有类都在同一个包中。

谢谢, -Alister

2 个答案:

答案 0 :(得分:1)

您可以在 @Before 方法中为DefaultSelenium创建三个对象。一个用于IE,一个用于FF,一个用于chrome。

如果您使用的是webdriver,则可以为其创建3个单独的驱动程序。

答案 1 :(得分:0)

您可以使用三个单独的套件(xml文件),然后在命令行中依次添加它们。这具有按顺序运行它们的效果。