在testng套件中按特定顺序运行测试

时间:2016-04-19 20:44:18

标签: xml selenium-webdriver testng

我想按特定顺序在testng中运行测试。有可能吗?

例如,这是我的testng.xml文件。我想首先运行Chrome测试,然后运行firefox。我不希望他们并行运行。怎么做?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="mycompany.myapp.local" parallel="none">
<test name="Test Module in Chrome">
    <parameter name="selenium.browser" value="chrome" />
    <parameter name="wheretorun" value="local" />
    <parameter name="chrome.driver.path"
        value="/path/to/chromedriver" />
    <classes>
        <class name="com.mycompany.TestClass">
            <methods>
                <include name="navigateToUserPage" />
                <include name="createUser" />
                <include name="verifySomething1" />
                <include name="verifySomething2" />
                <include name="logout" />
            </methods>
        </class>
    </classes>
</test>
<test name="Test Module in Firefox">
    <parameter name="selenium.browser" value="firefox" />
    <parameter name="wheretorun" value="local" />
    <classes>
        <class name="com.mycompany.TestClass">
            <methods>
                <include name="loginWithCreatedUser" />
                <include name="verifySomething1" />
                <include name="verifySomething2" />
                <include name="logout" />
            </methods>
        </class>
    </classes>
</test>
</suite>

我正在努力实现这一目标: - 在1个测试中创建用户,并在另一个测试中使用相同的用户。所以我想先运行第一次测试并在第一次测试完成后运行第二次。

否则,是否可以选择在套件级别运行某些内容..比如创建用户并设置一些数据,然后运行这两个测试?

非常感谢您抽出时间帮助我。

1 个答案:

答案 0 :(得分:2)

在我给你答案之前,我想说你应该总是努力并行。从长远来看,这将对您有所帮助。即使这意味着多次登录和退出,或者创建一个反复使用的测试用户池。测试应该很短,应该测试一件事而不依赖于其他测试。

但是因为理想并不总是可能的。

&#34; preserve-order如果为true,则此标记中的类将按照XML文件中的顺序运行。&#34;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="mycompany.myapp.local" parallel="tests" thread-count="1" preserve-order="true">
<test name="Setup User" preserve-order="true">
    <parameter name="selenium.browser" value="chrome" />
    <parameter name="wheretorun" value="local" />
    <parameter name="chrome.driver.path"
        value="/path/to/chromedriver" />
    <classes>
        <class name="com.mycompany.TestClass">
            <methods>
                <include name="createUser" />
            </methods>
        </class>
    </classes>
</test>
<test name="Test Module in Chrome" preserve-order="true">
    <parameter name="selenium.browser" value="chrome" />
    <parameter name="wheretorun" value="local" />
    <parameter name="chrome.driver.path"
        value="/path/to/chromedriver" />
    <classes>
        <class name="com.mycompany.TestClass">
            <methods>
                <include name="loginWithCreatedUser" />
                <include name="verifySomething1" />
                <include name="verifySomething2" />
                <include name="logout" />
            </methods>
        </class>
    </classes>
</test>
<test name="Test Module in Firefox" preserve-order="true">
    <parameter name="selenium.browser" value="firefox" />
    <parameter name="wheretorun" value="local" />
    <classes>
        <class name="com.mycompany.TestClass">
            <methods>
                <include name="loginWithCreatedUser" />
                <include name="verifySomething1" />
                <include name="verifySomething2" />
                <include name="logout" />
            </methods>
        </class>
    </classes>
</test>
</suite>

您还可以设置&#34;优先级&#34;在每次测试中确保它以正确的顺序运行。

再次,最好只设置4个静态用户,并行运行4个verifySomething测试和创建用户测试。