在testng中禁用并行执行(xml config)

时间:2016-11-02 17:28:40

标签: xml parallel-processing testng

我使用以下非常简单的XML文件来执行我的测试用例:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Regression">

<parameter name="browser" value="chrome" />
<parameter name="env" value="stage" />

 <test name="smokeTestSTAGE">

    <classes>   
    <class name="regression.gaming.playQuickGame2v2"/>
    <class name="regression.gaming.playQuickGame1v1"/>
    </classes>

 </test>

</suite>

正如你所看到的,我甚至没有使用“平行”这个词。在我的套件名称旁边,我的测试并行执行。这真是令人沮丧,因为它过去没有发生,它从今天开始,我真的不知道为什么。

我可以为您提供有关我的设置的更多详细信息(Java,Selenium 3.0.1),但我不认为是这种情况。

我想也许我的某个地方隐藏着@BeforeSuite,但这不是问题所在。 我只在我的测试用例中使用@BeforeClass + @AfterClass,因此根据官方文档:

@BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。

@AfterClass:在运行当前类中的所有测试方法之后,将运行带注释的方法。

但他们不是!仍然playQuickGame2v2和playQuickGame1v1同时执行!!我已经从Eclipse Marketplace下载了testng,如果它起到了我不知道的作用。我不这么认为。

*感觉我的@BeforeClass注释就好像是@BeforeTest *

我尝试了什么:

发现这篇文章:Stop parallel execution in TestNG

尝试设置parallel =&#34; false&#34;或平行=&#34;真&#34;和线程数=&#34; 1&#34; 根据塞德里克的答案,但无济于事。

还发现了这个stackoverflow帖子stackoverflow testng,但最重要的答案意味着我们需要为每个测试用例创建一个套件以解决这个问题 - 这绝对不是这样的,因为它将完全定义目的套件(即testCases的集合 - &gt;类)

我的所有课程都是这样写的:

    @BeforeClass
    @Parameters({"browser", "env"})
    public void initialSetup(String browser, String env){
    //do some stuff here
    }

    @Test (priority=1)
    public void initializeVariables(){
    //test some stuff here
    }

    @Test(priority=2)
    public void loginAsPlayer1(){
    //test some more stuff here
    }

    @AfterClass 
    public void shutDown(){    
    checkIfLoggedIn();  
    quitBrowser();  
    }

任何帮助都将非常感谢,伙计们!

提前致谢!

3 个答案:

答案 0 :(得分:0)

在这里发布这个xml在评论中看起来很难看。在测试标签中包装类部分解决了我的问题,因为测试类现在按顺序执行。当然,这不是正确的方法,所以对于我所遗漏的内容的任何建议都非常受欢迎。干杯! :)

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Regression">

<parameter name="browser" value="chrome" />
<parameter name="env" value="stage" />

 <test name="smokeTestSTAGE1">

    <classes>     
    <class name="playQuickGame1v1"/>
    </classes>

 </test>


 <test name="smokeTestSTAGE2">

    <classes> 
    <class name="playQuickGame2v2"/>
    </classes>

 </test>


</suite>

答案 1 :(得分:0)

好的解决了!! :) :) :)对不起我们现在可以关闭的愚蠢问题。 它就像恢复到以前的版本一样简单 http://beust.com/eclipse-old/eclipse_6.9.12.jar

为我们做了。

答案 2 :(得分:0)

我知道这是一个古老的问题但是当我遇到同样的问题时我遇到了它。

从6.9.13开始,看起来每个标签内的所有类都考虑了测试的优先级。因此,如果您有多个以@Test(优先级= 1)开头的类,它将运行这些测试方法中的每一个,然后再继续执行优先级为2的任何测试。

因此,测试不一定是并行运行的,它们按优先级顺序运行,如果重构的话,因为类的运行应该按预期运行。