我在3个Java类(Selenium Script)中有15个测试方法。我想用新窗口运行每个Test类。我正在使用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无法找到路径并且执行被卡住了。
另外请建议如何在执行期间获得异常后继续执行。
答案 0 :(得分:0)
在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();
}
您还可以创建一个只包含上面伪编码的设置和拆除方法的父类。您的所有3个测试类都应扩展此父类。它将是一种优化方法,因为驱动程序实例化和销毁现在集中在一个类中。
最后,更改testNG xml的suite标签中的parallel属性,以使它们并行运行。
<suite name="Fanfight Test" thread-count="10" parallel="classes">