2

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

很长一段时间以来,我一直在使用 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 实例运行而没有其他任何东西会中断它。

建议和解决方案将不胜感激。

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

谢谢,-阿利斯特

4

2 回答 2

1

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

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

于 2012-09-24T06:05:47.413 回答
0

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

于 2017-04-22T07:50:21.890 回答