继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

多个测试类,使用同一个浏览器,同一个driver对象,或者同一个页面的对象

心悦飞飞
关注TA
已关注
手记 18
粉丝 75
获赞 435

如果是:多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象,
只需要:

  1. 创建一个基本的测试类(BaseTest),具有一个公共静态的driver属性, public static WebDriver driver
  2. 给BaseTest类一个@Test(groups={"functionTests","checkinTests"})方法,
  3. BaseTest类中创建@beforeTest,@afterTest注解的方法, 不要创建@Test注解的方法,
  4. 其实,如果是PageObject设计模式,每个页面的对象创建也可以放在基础类BaseTest中,
  5. 其他的测试类继承这个基本的测试类BaseTest, 此时,所有的测试类就具有了一个共同的唯一的" driver ", 页面对象句柄。
  6. 给其他类中的方法也加上@Test(groups={"functionTests","checkinTests"})的注解,注解根据需要来设置。
  7. 当前也可以在其他类的类上声明@Test(groups={"functionTests","checkinTests"})注解。
  8. 如果某个测试类中有多个@Test注解的方法,则需要指定所有类中方法的执行顺序,而不是单个类中的,priority=0,开始
  9. 经过实验,发现每个测试类执行都是从默认的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 -->
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP

热门评论

感觉大神的代码,基本都使用的extend继承

查看全部评论