TestNG 单元测试框架的使用
JUnit让开发人员了解测试的实用性,尤其是在单元测试这一模块上比任何其他测试框架都要简单明了。凭借一个相当简单,务实,严谨的架构,JUnit已经能够“感染”了一大批开发人员。TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。
一:注解的使用
import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test;public class Annotation {@Testpublic void testCase1(){System.out.println("测试用例1被执行");}@Testpublic void testCase2(){System.out.println("测试用例2被执行");}@BeforeMethodpublic void beforeMethod(){System.out.println("@BeforeMethod:在每个测试方法开始运行前执行");}@AfterMethodpublic void afterMethod(){System.out.println("@AfterMethod:在每个测试方法开始运行结束后执行");}@BeforeClasspublic void beforeClass(){System.out.println("@BeforeClass:在当前测试类的第一个测试方法开始调用前执行");}@AfterClasspublic void afterClass(){System.out.println("@AfterClass:在当前测试类的最后一个测试方法结束运行后执行");}@BeforeTestpublic void beforeTest(){System.out.println("@BeforeTest:在测试类中的Test开始运行前执行");}@AfterTestpublic void afterTest(){System.out.println("@AfterTest:在测试类中的Test运行结束后执行");}@BeforeSuitepublic void beforeSuite(){System.out.println("@BeforeSuite:在当前测试集合(suite)中所有测试程序开始运行之前执行");}@AfterSuitepublic void afterSuite(){System.out.println("@AfterSuite:在当前测试集合(suite)中所有测试程序运行结束之后执行");} }
运行结果:
@BeforeSuite:在当前测试集合(suite)中所有测试程序开始运行之前执行
@BeforeTest:在测试类中的Test开始运行前执行
@BeforeClass:在当前测试类的第一个测试方法开始调用前执行
@BeforeMethod:在每个测试方法开始运行前执行
测试用例1被执行
@AfterMethod:在每个测试方法开始运行结束后执行
@BeforeMethod:在每个测试方法开始运行前执行
测试用例2被执行
@AfterMethod:在每个测试方法开始运行结束后执行
@AfterClass:在当前测试类的最后一个测试方法结束运行后执行
@AfterTest:在测试类中的Test运行结束后执行
PASSED: testCase1
PASSED: testCase2
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
@AfterSuite:在当前测试集合(suite)中所有测试程序运行结束之后执行
===============================================
Default suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
二:依赖测试
import org.testng.annotations.Test; public class DependentTest {/*** TestNG 依赖测试(使用dependsOnMethods参数实现)* 有时候需要按顺序来调用测试用例, 那么测试用例之间就存在依赖关系* 通过依赖测试,可以在不同的方法间共享数据和程序状态*/// dependsOnMethods={"OpenBrowser"} 表示在OpenBrowser方法被调用后才能执行login方法@Test(dependsOnMethods={"OpenBrowser"})public void login(){System.out.println("login方法被调用");}@Testpublic void OpenBrowser(){System.out.println("OpenBrowser方法被调用");}// dependsOnMethods={"login"} 表示在login方法被调用后才能执行logout方法@Test(dependsOnMethods={"login"})public void logout(){System.out.println("logout方法被调用");} }
运行结果:
OpenBrowser方法被调用
login方法被调用
logout方法被调用
PASSED: OpenBrowser
PASSED: login
PASSED: logout
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
三:按特定顺序执行测试
import org.testng.annotations.Test;public class SequenceTest {/*** 使用priority参数,可以按特定顺序执行测试*/@Test(priority=2)public void test3(){System.out.println("test3方法被调用");}// enabled=false 跳过这个测试方法@Test(priority=1,enabled=false)public void test2(){System.out.println("test2方法被调用");}@Test(priority=0)public void test1(){System.out.println("test1方法被调用");}@Test(priority=3)public void test4(){System.out.println("test4方法被调用");}}
运行结果:
test1方法被调用
test3方法被调用
test4方法被调用
PASSED: test1
PASSED: test3
PASSED: test4
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
四:测试集合,通过testng.xml方式来执行测试用例
<suite name="Suite"><test name="Test"><classes><!-- 测试集合,执行cn.testng包下的Annotation及test测试类 --><class name="cn.testng.Annotation"/><class name="cn.testng.test"/></classes></test> </suite>
五:测试用例的分组,通过testng.xml方式来执行测试用例
import org.testng.annotations.Test;public class Grouping {/*** 测试用例的分组,TestNG使用groups关键字进行分组,用来执行多个Test的测试用例*/@Test(groups={"人"})public void student(){System.out.println("学生方法被调用");}@Test(groups={"人"})public void teacher(){System.out.println("老师方法被调用");}@Test(groups={"动物"})public void cat(){System.out.println("小猫方法被调用");}@Test(groups={"动物"})public void dog(){System.out.println("小狗方法被调用");}}
设置testng.xml
<suite name="Suite"><test name="Grouping"><groups><run><include name="动物"></include></run></groups><classes><class name="cn.testng.Grouping"/></classes></test> </suite>
通过testng.xml方式来执行测试用例,结果如下:
小猫方法被调用
小狗方法被调用
===============================================
Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
转载于:https://www.cnblogs.com/wakey/p/10627985.html
TestNG 单元测试框架的使用相关推荐
- Java接口自动化之TestNG单元测试框架(一)
上一篇Java接口自动化系列文章:Java接口自动化之log4j日志框架,主要介绍log4j日志介绍.日志三大组成部分及日志实战. 以下主要介绍TestNG的简介.@Test注解及其属性. 01 Te ...
- python单元测试框架unittest介绍和使用_Python+Selenium框架设计篇之-简单介绍unittest单元测试框架...
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unittest是一 ...
- 华为python自动化测试框架_华为五年自动化测试工程详细解说:unittest单元测试框架...
一.单元测试框架说明 单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元测试 ...
- 华为五年自动化测试工程详细解说:unittest单元测试框架
一.单元测试框架说明 单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元测 ...
- 华为5年自动化测试工程详细解说:unittest单元测试框架
一.单元测试框架说明 单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元测试 ...
- 全面了解Unittest单元测试框架
一,前言 1,单元测试 软件测试一般按阶段划分为:单元测试,集成测试,系统测试.单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证. 单元测试中单元的含义,单元就是人为规定 ...
- unittest安装教程_Unittest单元测试框架
一,前言 1,单元测试 软件测试一般按阶段划分为:单元测试,集成测试,系统测试.单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证. 单元测试中单元的含义,单元就是人为规定 ...
- maven TestNg 测试框架 not found
在用TestNG测试框架进行单元测试时,在我的pom.xml中写的依赖: <dependency><groupId>org.testng</groupId>< ...
- pytest单元测试框架简介
一.什么是单元测试框架 单元测试框架是指:在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试. 二.单元测试框架的分类 Java: Juint.TestNG Python: unni ...
- 软件测试——Unittest单元测试框架详解
一,前言 1,单元测试 软件测试一般按阶段划分为:单元测试,集成测试,系统测试.单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证. 单元测试中单元的含义,单元就是人为规定 ...
最新文章
- 基于DQN强化学习训练一个超级玛丽
- linux c 宏判断多条件 #ifdef 和 #if defined 的区别
- 如何创建字符串(OC)
- 【爬虫剑谱】一卷3章 软件篇-Anaconda的安装及配置
- 软件_避免用chrome进行网站配置调试[博]
- 科技公司都是如何应对 COVID-19?
- 【渝粤教育】国家开放大学2018年春季 8647-21T工程经济与管理 参考试题
- tabbar图标大小更改
- erp系统用MySQL吗_如何给ERP系统选择合适的数据库?
- 综合运用(烤地瓜,搬家具)
- 马尔科夫链细致平衡条件
- 走马灯如何实现图片自适应
- vue 中父子组件传递通信(看图就会了,皮卡皮卡)
- AIX上解压缩.tar.Z, .tar.gz, .zip及.tgz
- 国际会议latex/overleaf模板
- 星环科技:坚持国产自主路线,突破大数据的细分应用场景
- wordexport.js导出word 分栏问题
- GooglePlay 发布问题汇总
- 如何安装小企鹅输入法
- 图像处理-直方图的反向投影