我想按特定顺序在 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 个测试中创建用户并在另一个测试中使用相同的用户。所以我想运行第一个测试,并仅在第一个测试完成后运行第二个测试。
否则,是否可以选择在套件级别运行某些内容..例如创建用户并设置一些数据,然后运行这两个测试?
非常感谢您抽出时间来帮助我。
最佳答案
在给你答案之前,我想说你应该始终努力并行运行事情。从长远来看,这会对您有所帮助。即使这意味着多次登录和退出或创建一个测试用户池以供反复使用。测试应该简短,应该测试一件事而不是依赖于其他测试。
但由于理想并不总是可行。
“preserve-order 如果为 true,则此标记中的类将以 XML 文件中的顺序运行。”
<?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>
您还可以为每个测试设置“优先级”,以确保它按正确的顺序运行。
同样,最好只设置 4 个静态用户,并行运行 4 个 verifySomething 测试和创建用户测试。
关于xml - 按特定顺序在 testng 套件中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729079/