如果是:多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象,
只需要:
- 创建一个基本的测试类(BaseTest),具有一个公共静态的driver属性, public static WebDriver driver
- 给BaseTest类一个@Test(groups={"functionTests","checkinTests"})方法,
- BaseTest类中创建@beforeTest,@afterTest注解的方法, 不要创建@Test注解的方法,
- 其实,如果是PageObject设计模式,每个页面的对象创建也可以放在基础类BaseTest中,
- 其他的测试类继承这个基本的测试类BaseTest, 此时,所有的测试类就具有了一个共同的唯一的" driver ", 页面对象句柄。
- 给其他类中的方法也加上@Test(groups={"functionTests","checkinTests"})的注解,注解根据需要来设置。
- 当前也可以在其他类的类上声明@Test(groups={"functionTests","checkinTests"})注解。
- 如果某个测试类中有多个@Test注解的方法,则需要指定所有类中方法的执行顺序,而不是单个类中的,priority=0,开始
- 经过实验,发现每个测试类执行都是从默认的priority=0开始,
如果只指定一个类中的测试方法的顺序,此时一起执行全部测试类时,不会按照类的顺序进行执行,而是会按照默认的priority来执行
由于每个测试中的测试方法默认的priority=0,所以testng会先将priority=0的方法执行完毕后,才会执行priority=1,2,3...
基础测试类
@Test(groups={"functionTests","checkinTests"})
public class BaseTest {
public static WebDriver driver;
@BeforeTest
public void before(){
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.sogou.com/");
}
@AfterTest
public void after() throws Exception{
Thread.sleep(2000);
driver.close();
driver.quit();
}
}
测试类
@Test(groups={"functionTests","checkinTests"})
public class TEST2 extends BaseTest{
@Test(priority=0)
public void TWO1(){
System.out.println("TWO1");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--1--");
}
@Test(priority=1)
public void TWO2(){
System.out.println("TWO2");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--2--");
}
@Test(priority=2)
public void TWO3(){
System.out.println("TWO3");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--3--");
}
}
测试类
public class TEST3 extends BaseTest{
@Test(groups={"functionTests","checkinTests"},priority=3)
public void THREE(){
System.out.println("33333333333333333");
driver.findElement(By.className("sec-input")).sendKeys("testTHREE----");
}
}
测试类
public class TEST4 extends BaseTest{
@Test(groups={"functionTests","checkinTests"},priority=4)
public void FOUR(){
System.out.println("444444444");
driver.findElement(By.className("sec-input")).sendKeys("testFOUR----");
}
}
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="1">
<test verbose="10" preserve-order="true" name="TestDebug">
<groups>
<run>
<exclude name="brokenTests" />
<include name="functionTests" />
</run>
</groups>
<classes>
<class name = "com.test.ztest.Test.TEST2"/>
<class name = "com.test.ztest.Test.TEST3"/>
<class name = "com.test.ztest.Test.TEST4"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
点击查看更多内容
3人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦