我在3个Java类(Selenium脚本(中有15种测试方法。我想用新窗口运行每个测试类。我正在使用TestNG框架。
这是testng的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Fanfight Test" thread-count="10" parallel="methods">
<listeners>
<listener class-name="com.fanfight.test_case.ListenerClass">
</listener>
</listeners>
<test name="User Login" parallel="false">
<classes>
<class name="com.fanfight.test_case.UserLogin"></class>
</classes>
</test>
<test name="Contest Creation" parallel="false" >
<classes>
<class name="com.fanfight.test_case.ContestCreation"></class>
</classes>
</test>
<test name="User Profile Test" parallel="false" >
<classes>
<class name="com.fanfight.test_case.UserProfileTest"></class>
</classes>
</test>
<test name="Menu Bar Test" parallel="false">
<classes>
<class name="com.fanfight.test_case.MenuBarTest">
</class>
</classes>
</test>
<test name="Home Page Elements" parallel="false" >
<classes>
<class name="com.fanfight.test_case.HomePageElementTest"></class>
</classes>
</test>
</suite>
不使用parallel="false"
,我的脚本以字母顺序运行,因为Selenium无法找到路径和执行。
另外,请建议如何在执行过程中获得例外情况,即使执行仍在继续。
在3个测试类中的每一个中添加设置并拆除方法。设置方法应启动浏览器,拆卸方法应关闭该浏览器实例。
class TestOne {
WebDriver driver;
@BeforeClass
public void setup(){
driver = new ChromeDriver();
}
@Test
public void testCase1(){
}
//.... Other test methods
@AfterClass
public void tearDown(){
driver.quit();
}
您还可以创建一个只有设置和拆除方法的父类,上面编码的伪编码。您的三个测试课程均应扩展此父级。这将是一种优化的方法,因为驱动程序的实例化和破坏现在集中在单个类中。
最后,更改testng XML的套件标签中的并行属性,以使其并行运行。
<suite name="Fanfight Test" thread-count="10" parallel="classes">