selenium的TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言_06
2017-02-28 22:31
706 查看
TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言
1.注解:新建testNG框架的Annotation类,代码如下
public
classAnnotation {
@Test
public
voidtestCase1() {
System.out.println("测试用例1被执行");
}
@Test
public
voidtestCase2() {
System.out.println("测试用例2被执行");
}
@BeforeMethod
public
voidbeforeMethod() {
System.out.println("在每个测试方法开始运行前执行");
}
@AfterMethod
public
voidafterMethod() {
System.out.println("在每个测试方法运行结束后执行");
}
@BeforeClass
public
voidbeforeClass() {
System.out.println("在当前测试类的第一个测试方法之前调用执行");
}
@AfterClass
public
voidafterClass() {
System.out.println("在当前测试类的最后一个方法执行结束后执行");
}
@BeforeTest
public
voidbeforeTest() {
System.out.println("在测试类中的Test开始运行前执行");
}
@AfterTest
public
voidafterTest() {
System.out.println("在测试类中的Test运行结束后执行");
}
@BeforeSuite
public
voidbeforeSuite() {
System.out.println("当前测试集合中所有测试程序开始之前执行");
}
@AfterSuite
public
voidafterSuite() {
System.out.println("当前测试集合所有测试程序执行结束后执行");
}
}
执行结果:
当前测试集合中所有测试程序开始之前执行
在测试类中的Test开始运行前执行
在当前测试类的第一个测试方法之前调用执行
在每个测试方法开始运行前执行
测试用例1被执行
在每个测试方法运行结束后执行
在每个测试方法开始运行前执行
测试用例2被执行
在每个测试方法运行结束后执行
在当前测试类的最后一个方法执行结束后执行
在测试类中的Test运行结束后执行
当前测试集合所有测试程序执行结束后执行
2. 测试集合需要新建testng.xml文件并进行配置如下:
<?xmlversion="1.0" encoding="UTF-8"?>
<suite name="Suite"parallel="false">
<test name="Grouping">
<classes>
<classname="demo.Annotation"/>
<classname="demo.prihthello"/>
</classes>
</test> <!-- Test -->
</suite><!-- Suite -->
执行结果:执行了两个class里面的case
3. 用例分组groups关键字,并要配置testng.xml文件,代码如下:
public
class grouping{
@Test (groups={"人"})
public
void student(){
System.out.println("student学生方法被调用");
}
@Test (groups={"人"})
public
void teacher(){
System.out.println("teacher老师方法被调用");
}
@Test (groups={"动物"})
public
void cat() {
System.out.println("cat小猫方法被调用");
}
@Test (groups={"动物"})
public
void dog() {
System.out.println("dog小狗方法被调用");
}
@Test (groups={"人","动物"})
public
void feeder(){
System.out.println("feeder饲养员方法被调用");
}
}
testng.xml配置如下:
<?xmlversion="1.0" encoding="UTF-8"?>
<suite name="Suite"parallel="false">
<test name="Grouping">
<groups>
<define name="all">
<include name="人"/>
<include name="动物"/>
</define>
<run>
<includename="all"/>
</run>
</groups>
<classes>
<classname="demo.grouping"/>
</classes>
</test> <!-- Test -->
</suite><!-- Suite -->
4. 依赖测试dependsonmethods参数,代码如下
//依赖测试
public
class depends {
@Test (dependsOnMethods={"OpenBrowser"})
public
void SignIn(){
System.out.println("SignIn方法被调用");
}
@Test
public
voidOpenBrowser() {
System.out.println("OpenBrowser方法被调用");
}
@Test (dependsOnMethods={"SignIn"})
public
void LogOut(){
System.out.println("LogOut方法被调用");
}
}
执行结果:
OpenBrowser方法被调用
SignIn方法被调用
LogOut方法被调用
5. 特定顺序执行 priority参数,代码如下:
public
class priority{
@Test(priority=3)
public
void test4() {
System.out.println("test4被调用");
Reporter.log("test4被调用");
}
@Test(priority=1)
public
void test2() {
System.out.println("test2被调用");
Reporter.log("test2被调用");
}
@Test(priority=2,enabled=false)
public
void test3() {
System.out.println("test3被调用");
Reporter.log("test3被调用");
}
@Test (priority=0)
public
void test1() {
System.out.println("test1被调用");
}
}
执行结果:
test1被调用
test2被调用
test3被调用
test4被调用
6.跳过某个case使用enable=false,代码如下
@Test (enabled=false)
public
void test3() {
System.out.println("test3被调用");
}
执行结果:该test3用例不会被执行
7. 自定义日志Reporter.log(""),代码如下;
@Test (priority=0)
public
void test1() {
Reporter.log("test1被调用");
}
执行结果:在index.html中Reporter.output模块显示“test1被调用”
8.断言Assert,代码如下:
Assert.assertTrue(true/false);
执行结果:当断言执行成功,会继续执行后续语句
当断言执行失败,不继续执行后续语句
1.注解:新建testNG框架的Annotation类,代码如下
public
classAnnotation {
@Test
public
voidtestCase1() {
System.out.println("测试用例1被执行");
}
@Test
public
voidtestCase2() {
System.out.println("测试用例2被执行");
}
@BeforeMethod
public
voidbeforeMethod() {
System.out.println("在每个测试方法开始运行前执行");
}
@AfterMethod
public
voidafterMethod() {
System.out.println("在每个测试方法运行结束后执行");
}
@BeforeClass
public
voidbeforeClass() {
System.out.println("在当前测试类的第一个测试方法之前调用执行");
}
@AfterClass
public
voidafterClass() {
System.out.println("在当前测试类的最后一个方法执行结束后执行");
}
@BeforeTest
public
voidbeforeTest() {
System.out.println("在测试类中的Test开始运行前执行");
}
@AfterTest
public
voidafterTest() {
System.out.println("在测试类中的Test运行结束后执行");
}
@BeforeSuite
public
voidbeforeSuite() {
System.out.println("当前测试集合中所有测试程序开始之前执行");
}
@AfterSuite
public
voidafterSuite() {
System.out.println("当前测试集合所有测试程序执行结束后执行");
}
}
执行结果:
当前测试集合中所有测试程序开始之前执行
在测试类中的Test开始运行前执行
在当前测试类的第一个测试方法之前调用执行
在每个测试方法开始运行前执行
测试用例1被执行
在每个测试方法运行结束后执行
在每个测试方法开始运行前执行
测试用例2被执行
在每个测试方法运行结束后执行
在当前测试类的最后一个方法执行结束后执行
在测试类中的Test运行结束后执行
当前测试集合所有测试程序执行结束后执行
2. 测试集合需要新建testng.xml文件并进行配置如下:
<?xmlversion="1.0" encoding="UTF-8"?>
<suite name="Suite"parallel="false">
<test name="Grouping">
<classes>
<classname="demo.Annotation"/>
<classname="demo.prihthello"/>
</classes>
</test> <!-- Test -->
</suite><!-- Suite -->
执行结果:执行了两个class里面的case
3. 用例分组groups关键字,并要配置testng.xml文件,代码如下:
public
class grouping{
@Test (groups={"人"})
public
void student(){
System.out.println("student学生方法被调用");
}
@Test (groups={"人"})
public
void teacher(){
System.out.println("teacher老师方法被调用");
}
@Test (groups={"动物"})
public
void cat() {
System.out.println("cat小猫方法被调用");
}
@Test (groups={"动物"})
public
void dog() {
System.out.println("dog小狗方法被调用");
}
@Test (groups={"人","动物"})
public
void feeder(){
System.out.println("feeder饲养员方法被调用");
}
}
testng.xml配置如下:
<?xmlversion="1.0" encoding="UTF-8"?>
<suite name="Suite"parallel="false">
<test name="Grouping">
<groups>
<define name="all">
<include name="人"/>
<include name="动物"/>
</define>
<run>
<includename="all"/>
</run>
</groups>
<classes>
<classname="demo.grouping"/>
</classes>
</test> <!-- Test -->
</suite><!-- Suite -->
4. 依赖测试dependsonmethods参数,代码如下
//依赖测试
public
class depends {
@Test (dependsOnMethods={"OpenBrowser"})
public
void SignIn(){
System.out.println("SignIn方法被调用");
}
@Test
public
voidOpenBrowser() {
System.out.println("OpenBrowser方法被调用");
}
@Test (dependsOnMethods={"SignIn"})
public
void LogOut(){
System.out.println("LogOut方法被调用");
}
}
执行结果:
OpenBrowser方法被调用
SignIn方法被调用
LogOut方法被调用
5. 特定顺序执行 priority参数,代码如下:
public
class priority{
@Test(priority=3)
public
void test4() {
System.out.println("test4被调用");
Reporter.log("test4被调用");
}
@Test(priority=1)
public
void test2() {
System.out.println("test2被调用");
Reporter.log("test2被调用");
}
@Test(priority=2,enabled=false)
public
void test3() {
System.out.println("test3被调用");
Reporter.log("test3被调用");
}
@Test (priority=0)
public
void test1() {
System.out.println("test1被调用");
}
}
执行结果:
test1被调用
test2被调用
test3被调用
test4被调用
6.跳过某个case使用enable=false,代码如下
@Test (enabled=false)
public
void test3() {
System.out.println("test3被调用");
}
执行结果:该test3用例不会被执行
7. 自定义日志Reporter.log(""),代码如下;
@Test (priority=0)
public
void test1() {
Reporter.log("test1被调用");
}
执行结果:在index.html中Reporter.output模块显示“test1被调用”
8.断言Assert,代码如下:
Assert.assertTrue(true/false);
执行结果:当断言执行成功,会继续执行后续语句
当断言执行失败,不继续执行后续语句
相关文章推荐
- TestNG入门教程(TestNG介绍、在Eclipse中安装TESTNG、测试小例子、基本注解、如何执行测试、按顺序执行Case、异常测试、组合测试、参数化测试、忽略测试、依赖测试、测试结果报告)
- TestNG特定顺序执行测试用例
- selenium---unittest框架测试用例函数执行顺序 优先级
- selenium---unittest框架测试用例函数执行顺序 优先级
- Java+Selenium3框架设计准备篇6-TestNG执行测试方法依赖关系
- selenium---unittest框架测试用例函数执行顺序 优先级
- TestNG设置输出测试报告的内容级别和设置测试用例按顺序执行
- Junit框架使用(3)--按照顺序执行测试用例
- TestNG设置输出测试报告的内容级别和设置测试用例按顺序执行
- TestNG-详解preserve-order的作用与测试case的执行顺序
- 在visual studio中自定义顺序执行测试用例
- TestNG执行测试用例的顺序
- TestNG-详解preserve-order的作用与测试case的执行顺序
- TestNG-详解preserve-order的作用与测试case的执行顺序
- TestNG 学习总结 - 测试结果报告 - 自定义日志记录(十五)
- TestNG学习-002-annotaton 注解概述及其执行顺序
- 基于maven+testng的selenium测试框架搭建
- selenium webdriver+testng自定义html测试报告
- Python单元测试框架之pytest---如何执行测试用例
- TestNG 学习总结 - 分组执行测试(九)