多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象
如果是:多个测试类 只使用同一个浏览器,同一个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 -->
分享完成,如有更好的方法,请不令赐教。
多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象的更多相关文章
- Frameset框架,在同一个浏览器窗口中显示不止一个页面
总结一下.通过使用Frameset框架,可以在同一个浏览器窗口中显示不止一个页面. 先举个例子: 1 <frameset rows="100,*" cols="*& ...
- python selenium 多个页面对象类使用同一个webdriver(即只打开一个浏览器窗口)
1 class BasePage(): 2 """selenium基类""" 3 4 def __init__(self, driver=N ...
- unittest中更高效的执行测试用例一个类只需要打开一次浏览器
示例代码 baidu.py # _*_ coding:utf-8 _*_ import csv,unittest #导入csv模块 from time import sleep from seleni ...
- Appscan_web安全测试工具 (含修改启动浏览器的方法)
安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄弟” ...
- 测试类异常Manual close is not allowed over a Spring managed SqlSession
在用Spring 和mybatis整合的 写测试类的时候报出解决办法:在全局配置文件 class="org.mybatis.spring.SqlSessionTemplate" ...
- python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...
- XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)
当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...
- JUit——(三)JUnit核心对象(测试、测试类、Suit和Runner)
JUnit的核心对象:测试.测试类.测试集(Suite).测试运行器 1. 测试: @Test注释的.公共的.不带有任何参数.并且返回void类型的方法 2. 测试类: 公共的,包含对应类的测试方法的 ...
- Randoop测试类和方法(用例自动生成)
详细使用方法见randoop官网: https://randoop.github.io/randoop/manual/index.html 测试程序之前,先检测下你的Randoop是否配置好: 打开c ...
随机推荐
- tkinter模块常用参数(python3)
1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名:root.r ...
- EasyNetQ之多态发布和订阅
你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...
- 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)
写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...
- java IO之 编码 (码表 编码 解码 转换流)
编码 什么是编码? 计算机中存储的都是二进制,但是要显示的时候,就是我们看到的却可以有中国 ,a 1 等字符 计算机中是没有存储字符的,但是我们却看到了.计算机在存储这些信息的时候,根据一个有规 则 ...
- spring框架-spring.xml配置文件
运行的时候会报错的,因为写到<bean>标签里面去了,肯定会报错的,要记得把注释删掉,就不会报错了,这样写注释是为了方便下次自己看. <?xml version="1.0& ...
- 智联招聘 卓聘IM演进过程
1. 卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年了,业务增涨每年以100%速度增涨,业务增涨快在开发和上线速度要求也比较高. 2016年6月提出IM开发需求,7月初上线,开发人 ...
- ubuntu14.04_caffe2安装
今天F8开发者大会上,Facebook正式发布Caffe2.经过一天的折腾,终于在ubuntu14.04上成功配置caffe2,现将经验分享如下: 1.ubuntu14.04系统下caffe2所需依赖 ...
- Windows远程linux服务器执行shell命令
一.前言 借用百度百科关于putty的描述:PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件.较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台 ...
- ASPCMS改造中
10月中旬的时候,芹芹大神给我接了个做网站的活,一番商量过后,我以低得说出来丢人TT的价格接了.主要是想借此摸清网站制作的一条龙服务. 目前根据ASPCMS开源管理系统,做了个大致的构架,下面上草图: ...
- springboot用thymeleaf模板的paginate分页
本文根据一个简单的user表为例,展示 springboot集成mybatis,再到前端分页完整代码(新手自学,不足之处欢迎纠正): 先看java部分 pom.xml 加入 <!--支持 Web ...