APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言
继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告。下一篇为HTTP接口实战(国家气象局接口自动化测试)
2.2.2.1 新建JAVA工程2.2.2.2 引入Lib库2.2.2.3 检查testng报告配置2.2.2.4 编写测试用例
2.2.3.1编写测试用例2.2.3.2执行用例
因原来没有保留相关内容,以下实例均为本次总结再次编写,,如转载还请保留出处与作者姓名Findyou,谢谢!
2.1 TestNG与JUnit对比
为了文章的完整性,从网络摘抄部分文字介绍相关内容。
官网:http://testng.org/doc/index.html
不错的入门介绍: http://www.yiibai.com/testng/
2.1.1 JUnit缺点
- 最初的设计,使用于单元测试,现在只用于各种测试
- 不能依赖测试
- 配置控制欠佳(安装/拆卸)
- 侵入性(强制扩展类,并以某种方式命名方法)
- 静态编程模型(不必要的重新编译)
- 不同的适合管理复杂项目中的测试可以是非常棘手
2.1.2 TestNG是什么?
TestNG按照其文档的定义是:
- TestNG是一个测试框架,其灵感来自JUnit和NUnit的,但引入了一些新的功能,使其功能更强大,使用更方便。
- TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。 TestNG的创造者是Cedric Beust(塞德里克•博伊斯特)
- TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。
2.1.3TestNG的特点
- 注解
- TestNG使用Java和面向对象的功能
- 支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
- 独立的编译时间测试代码运行时配置/数据信息
- 灵活的运行时配置
- 主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
- 支持依赖测试方法,并行测试,负载测试,局部故障
- 灵活的插件API
- 支持多线程测试
2.2 TestNG注解与基础实例
2.2.1 注解
注解
描述
@BeforeSuite
注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite
注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass
注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass
注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest
注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。
@AfterTest
注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。
@BeforeGroups
按组( @Test(groups= "findyou") )运行时,此注解在组(findyou组)执行之前运行,可做组(findyou组)执行之前,初始化数据准备类工作。@AfterGroups
按组( @Test(groups= "findyou") )运行时,此注解在组(findyou组)执行之后运行,可做组(findyou)执行之后,数据还原类工作。@BeforeMethod
注解的方法将每个测试方法之前运行。
@AfterMethod
被注释的方法将被运行后,每个测试方法。
@DataProvider
标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory
作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners
定义一个测试类的监听器。
@Parameters
介绍如何将参数传递给@Test方法。
@Test
标记一个类或方法作为测试的一部分。
2.2.2 基础实例1
2.2.2.1 新建JAVA工程
新建: NEW --> JAVA Project --> 输入工程名称 --> Finish详请Google OR 百度2.2.2.2 引入Lib库
2.2.2.3检查testng报告配置
2.2.2.4 编写测试用例
package findyou.testcase;
import org.testng.annotations.Test; public class TestCaseStudy { // test case 1 @Test public void testCase1() { System.out.println("in test case 1"); } }2.2.2.5 执行用例
执行:右击JAVA文件,Run as -- > TestNG Test
- 执行结果:
- 测试报告:
- 浏览器查看:
概要
详细
2.2.3 基础实例2
2.2.3.1 编写测试用例
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; public class TestngStudy { // test case 1 @Test public void testCase1() { System.out.println("This is a test case 1"); } // test case 2 @Test public void testCase2() { System.out.println("This is a test case 2"); } @BeforeMethod public void beforeMethod() { System.out.println("This is beforeMethod"); } @AfterMethod public void afterMethod() { System.out.println("This is afterMethod"); } @BeforeClass public void beforeClass() { System.out.println("This is beforeClass"); } @AfterClass public void afterClass() { System.out.println("This is afterClass"); } @BeforeTest public void beforeTest() { System.out.println("This is beforeTest"); } @AfterTest public void afterTest() { System.out.println("This is afterTest"); } @BeforeSuite public void beforeSuite() { System.out.println("This is beforeSuite"); } @AfterSuite public void afterSuite() { System.out.println("This is afterSuite"); } }2.2.3.2 执行用例
[TestNG] Running:
C:\Users\Albert\AppData\Local\Temp\testng-eclipse--65898469\testng-customsuite.xml
This is beforeSuite
This is beforeTest
This is beforeClass
This is beforeMethod
This is a test case 1
This is afterMethod
This is beforeMethod
This is a test case 2
This is afterMethod
This is afterClass
This is afterTest
PASSED: testCase1
PASSED: testCase2
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
This is afterSuite
===============================================
Default suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
[TestNG] Time taken by org.uncommons.reportng.HTMLReporter@5f8ed237: 217 ms
以上TestNG学习基本了解完毕,下一篇将通过对国家气象局提供的天气接口的测试,来讲解HTTP接口的自动化测试,与结果断言。
原创,如转载还请保留出处与作者姓名Findyou,谢谢!
APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例的更多相关文章
- APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例
前言 前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相 ...
- APP接口自动化测试JAVA+TestNG(一)之框架环境搭建
前言 好久不曾写点啥,去年换到新公司组测试团队与培养建设花费大量时间与精力,终于架构成型与稳定有时间可以打打酱油了.很久没有总结点啥,提笔想写的内容太多,先放APP接口自动化的内容吧,这个估计大家比较 ...
- 零成本实现接口自动化测试 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- (转)接口自动化测试 – Java+TestNG 测试 Restful Web Service
本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高.所用到的工具或类库有 T ...
- 使用jmeter+ant进行接口自动化测试(数据驱动)之二:利用apache-ant执行测试用例并生成HTML格式测试报告
在 使用jmeter+ant进行接口自动化测试(数据驱动)之一 介绍了如何使用csv文件来批量管理接口 本次接着介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告 ①下载安装 ap ...
- 接口自动化测试框架搭建 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- Maven+TestNG+ReportNG/Allure接口自动化测试框架初探(上)
转载:http://www.51testing.com/html/58/n-3721258.html 由于一直忙于功能和性能测试,接口自动化测试框架改造的工作被耽搁了好久.近期闲暇一些,可以来做点有意 ...
- 手把手教你接口自动化测试 – SoapUI & Groovy
手把手教你接口自动化测试 – SoapUI & Groovy http://www.cnblogs.com/wade-xu/p/4236295.html 关键词:SoapUI接口测试,接口自动 ...
- 手把手教你接口自动化测试 – SoapUI & Groovy【转】
手把手教你接口自动化测试 – SoapUI & Groovy Posted on 2015-01-21 09:38 WadeXu 阅读(12741) 评论(10) 编辑 收藏 手把手教你接口自 ...
随机推荐
- jQuery弹出提示信息简洁版(自动消失)
之前看了有一些现成的blockUI.Boxy.tipswindow等的jQuery弹出层插件,可是我的要求并不高,只需要在保存后弹出提示信息即可,至于复杂点的弹出层-可以编辑的,我是直接用bootst ...
- SQL Server 高级sql总结
----------------------------------------------------------------------Select------------------------ ...
- SDOI 2016 生成魔咒
题目大意:一个字符串,刚开始为空,依次在后面添加一个字符,问每次添加完字符后本质不同的字符串有多少种 后缀自动机裸题,添加字符时,更新的结点个数即为新增加的子串 #include<bits/st ...
- c = (a / b, a%b) 运算输出顺序
#include<iostream> int main() { using namespace std; int a, b, c; a = ; b = ; c = ; printf(&qu ...
- 实战JS正则表达式
-正则表达式是一种文本模式的匹配工具. -文章导读: --1.正则对象的属性和方法 --2.字符串对象的方法 --3.使用正则表达式: ---3.1 给字符串加上千分符 ---3.2 字符串中出现次数 ...
- [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议
一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...
- [nRF51822] 15、穿戴式设备上电量检测装置的设计及细节技术点(偏专业硬件文章)
穿戴式 设备如智能手环.智能手表一般采用几百毫安时的锂离子电池来供电.因此,与之配套的充电电路.稳压电路和电池电量检测电路便必不可少!本文主要谈谈该类消费类电子内部电池电量检测的一般方法及其优缺点. ...
- [ASP.NET MVC 小牛之路]18 - Web API
Web API 是ASP.NET平台新加的一个特性,它可以简单快速地创建Web服务为HTTP客户端提供API.Web API 使用的基础库是和一般的MVC框架一样的,但Web API并不是MVC框架的 ...
- struts tags
HTTP ERROR 500 Problem accessing /showognl.jsp. Reason: Server Error Caused by: org.apache.jasper.Ja ...
- edit
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...