IDEA,Java + Maven + TestNG编写接口自动化测试用例脚本
testng配置文件
1.1、Java基础教程
我先复习Java的基本简介、语法、写法、使用。参考资料
- 安装java 开发工具包:JDK8 或更高版本
- 配置环境变量
- 安装java开发工具:IDEA
- Java基本语法:对象、类、实例、方法、实例变量、标识符【类名| 变量名| 方法名】、修饰符【用于修饰类中方法和属性】、变量【局部变量| 类变量/静态变量| 成员变量/非静态变量】、数组、枚举、关键字、注释、空行、继承、接口。
- Java命名规范:大小写敏感、类名首字母大写的驼峰式、方法名首字母小写的驼峰式、源文件名必须和类名相同
- Java基本概念:多态、继承、封装、抽象、类、对象、实例、方法、重载等等
- Java基本类型(八种):byte、short、int、long、float、double、boolean、char
- Java的运算符、循环结构、条件语句、switch case、Number & Math 类、Character 类、String 类、StringBuffer 和 StringBuilder 类、数组、日期时间、正则表达式、方法、流(Stream)、文件(File)和IO、Scanner 类、异常处理等等
- Java的数据结构、集合框架、ArrayList、LinkedList、HashSet、HashMap、Iterator(迭代器)、Object 类、泛型、序列化等等
- Java的网络编程、发送邮件 、多线程编程 、Applet 基础、文档注释、实例等等
1.2、TestNG
- TestNG基本解释:(即Testing,Next Generation,即下一代测试技术)是Java中的一个开源自动化测试框架。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类时。它借鉴了Java的注解。它旨在涵盖所有类别的测试:单元,功能,端到端,集成等…
详细使用说明请参考:TestNG官方链接。 - TestNG基本特点:【注解】、【使用Java面向对象的功能】、【支持综合类测试】、【独立的编译时代码自检审核和运行时配置/数据信息】、【支持编译测试不同优先级、不同类别的用例】、【灵活的插件API】、【支持多线程测试】等
- 使用注解的好处:
a、TestNG通过查找注释/注解来识别它感兴趣的方法。 因此,方法名称不限于任何模式或格式
b、可以将其他参数传递给注释。
c、注释是强类型的,所以编译器会马上标记任何错误。
d、测试类不再需要扩展任何东西(如TestCase,对于JUnit3)。
1.3、TestNG支持的注释列表:
注解 | 描述 |
---|---|
@BeforeSuite
|
测试套件前运行,一个测试套件中可以包含多个测试类,仅运行一次。 |
@AfterSuite
|
测试套件后运行,一个测试套件中可以包含多个测试类,仅运行一次。 |
@BeforeClass
|
在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。 |
@AfterClass
|
在调用当前类的第一个测试方法之后运行,注释方法仅运行一次 |
@BeforeTest
|
注释的方法将在属于<test> 标签内的类的所有测试方法运行之前运行。
|
@AfterTest
|
注释的方法将在属于<test> 标签内的类的所有测试方法运行之后运行。
|
@BeforeGroups
|
配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。 |
@AfterGroups
|
此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。 |
@BeforeMethod
|
注释方法将在每个测试方法之前运行。 |
@AfterMethod
|
注释方法将在每个测试方法之后运行。 |
@DataProvider
|
标记一种方法来提供测试方法的数据。注释方法必须返回一个Object [] [] ,其中每个Object [] 可以被分配给测试方法的参数列表。 要从该DataProvider 接收数据的@Test 方法需要使用与此注释名称相等的dataProvider 名称。
|
@Factory
|
将一个方法标记为工厂,返回TestNG 将被用作测试类的对象。 该方法必须返回Object [] 。
|
@Listeners
|
定义测试类上的监听器。 |
@Parameters
|
描述如何将参数传递给 @Test 方法。
|
@Test
|
将类或方法标记为测试的一部分。 |
1.4、JSONAssert
- 将字符串转换为JSON对象,并将逻辑结构和数据与实际JSON进行比较。一个专注于理解 JSON 数据并使用该数据编写复杂 JUnit 测试的库。
- 当strict(严格模式)设置为false(推荐设置)时,它会允许数据重排序以及结果可扩展(只要对比的JSON包含了所有预期JSON的所有字段),从而使测试不那么脆弱。建议关掉严格模式,除非你要求比较的JSON与预期的JSON中数组顺序相同,或者要求两者具有相同的字段。
/*** Asserts that the JSONObject provided matches the expected string. If it isn't it throws an* {@link AssertionError}.** @param expectedStr Expected JSON string* @param actual JSONObject to compare* @param strict Enables strict checking* @throws JSONException JSON parsing error*/public static void assertEquals(String expectedStr, JSONObject actual, boolean strict)throws JSONException {assertEquals(expectedStr, actual, strict ? JSONCompareMode.STRICT : JSONCompareMode.LENIENT);}
二、搭建框架(创建maven项目,配置testng依赖)
2.1、创建普通maven项目即可
2.2、在pom.xml中配置依赖
<dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>${testng.version}</version></dependency></dependencies>
2.3、下载依赖(pom文件重新加载项目)
三、创建Demo测试类和方法
直接复制官网中的simple:
package com.demo.apitest.testcase;import org.testng.annotations.*;public class DemoTest {@BeforeClasspublic void setUp() {// code that will be invoked when this test is instantiated}@Test(groups = {"fast"})public void aFastTest() {System.out.println("Fast test");}@Test(groups = {"slow"})public void aSlowTest() {System.out.println("Slow test");}
}
四、两种方式运行(直接运行、xml方式运行)
4.1、直接运行
直接运行
4.2、xml方式运行
IDEA创建的项目默认不会生成testng.xml(用于控制测试执行的执行)文件,就需要在根目录手动创建该文件,同时需要在pom.xml文件中关联设置testng.xml。testng.xml写法参考官网:
官网中testng.xml
基本格式如下:
- 每一个xml文件只能有一个suite,代表的是一个测试集;
- 一个suite中可包含多个test,默认情况下,多个test会顺序执行。若希望多个test以不可预知的顺序运行,可将preserve-order 属性设置为false;
- 每一个test里边可以写需要运行的测试用例的class。如果不写,默认会跑所有的测试用例;
- 每个class可以指定要执行哪些用例,不执行哪些用例。如果不写method,则默认本类里的全部用例都执行。
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->
<suite name="Suite1" verbose="1" parallel="methods" thread-count="1"><test name="Dest1"><groups><run><exclude name="P0"></exclude></run></groups><packages><package name="com.demo.api.testcase.*"/></packages></test></suite>
新建testng.xml
注意第一行中的"https://testng.org/testng-1.0.dtd"是https开头的,不要写成http,否则运行会报错,可参考:TestNG by default disables loading DTD... 的解决办法 - 知乎
xml方式运行
五、实际应用中的常见用例写法
常见项目结构
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com.demo.apitest # 框架公共服务模块
│ │ │ └── annotations # 注释
│ │ │ └── api # 后端接口定义
│ │ │ └── enums # 枚举
│ │ │ └── model # Model
│ │ │ └── service # 公共方法
│ │ │ └── utils # 公共工具方法
│ │ └── resources
│ │ ├── driver # selenium的chrome驱动,用于本地登陆获取cookie
│ │ └── application.yml # 配置文件
│ └── test
│ ├── java
│ │ ├── com.demo.apitest # 框架公共服务模块
│ │ │ └── testcase # 接口测试脚本
│ │ └── MyBaseTestNg.java # testng基础测试类,所有测试脚本的父类
│ └── resources
│ └── testdata # 接口测试数据
└── testng.xml # testng测试套件配置
延伸下,在src.main.resources 目录下可创建一个 application .yml文件,用于配置公共参数,普通类型参数可使用 @value注解获取,list类型参数可使用@ConfigurationProperties注解获取
六、扩展:TestNG的常见测试场景
- 预期异常测试
- 忽略测试
- 超时测试
- 分组测试
- 套件测试(一起运行多个测试类)
- 依赖测试
- 参数化测试
- 参数测试实例
IDEA,Java + Maven + TestNG编写接口自动化测试用例脚本相关推荐
- php接口自动化测试用例编写
最近用php写完了一版项目的接口,代码有点多,意味着bug也会很多,人工测试起来有点麻烦,于是准备用php编写一个测试bug的程序.以前是没有这种意识的.这篇文章主要是提醒我未来程序写完后,能养成编写 ...
- 接口自动化测试用例详解
phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数 ...
- 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...
在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例.就像功能测试一样,当测试人员做了一些操作之后必然会判断实际结果是否等于预期结果,只不过,这个 ...
- 如何自动生成接口自动化测试用例
这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例,也就是将API文档变更同步到测试用例,下面是流程的示例解析. 导入并关联API文档和自动化测试用例 首先是登陆Eolinker ...
- 手把手教你设计接口自动化测试用例:根据接口信息设计测试用例
目录 01 设计主测试用例的字段 02 设计配置信息的字段 03 设计执行结果记录的字段 04 设计主测试用例内容并解决关联关系 05 设计配置信息的内容 06 执行结果记录的内容 07 参考建议 0 ...
- 手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例
手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例 上一篇文章 手把手带你设计接口自动化测试用例(一):提取接口信息并分析 详细介绍了如何提取并分析登录.发布.修改.删除.查询等接口信息 ...
- 实操自动生成接口自动化测试用例
这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例,也就是将API文档变更同步到测试用例,下面是流程的示例解析. 导入并关联API文档和自动化测试用例 首先是登陆Eolinke ...
- 手把手带你设计接口自动化测试用例:建立数据库实例和测试用例表
目录 建立数据库实例 建立主测试用例表 参考建议 设计接口自动化框架需要考虑测试用例存储的方式.在实际项目中,测试用例存储的方式有多种,可以存放在 Excel 表格中,也可以存放于 Yaml 文件中, ...
- 接口自动化测试用例设计方法
一.接口参数覆盖 接口测试通过输入使用参数组合,获取服务器返回值,根据预先设定的规则判断是否符合预期值.在接口测试中根据接口的功能不同,需要侧重检测方面不同,主要从以下几个方面考虑设计用例 1)参数类 ...
最新文章
- LeetCode简单题之赎金信
- PowerDesigner 生成的脚本取掉双引号
- 问答机器人接口python_设计用于机器学习工程的Python接口
- Eclipse 安装配置总结(WST WTP)(转)
- 该如何高效实用Kotlin?看这一篇就够了!
- oracle忽略除数为0,ora-01476除数为0的解决办法,oracle中decode()的使用
- LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)
- 查看队列深度_不为人知的网络编程(十一):从底层入手,深度分析TCP连接耗时的秘密...
- 如何让隐藏在大数据背后的价值发挥出来?
- QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
- 陈纪修老师《数学分析》 第02章:数列极限 笔记
- MATLAB常用画图函数
- python基础案例教程课后答案_Python基础案例教程
- 全面的SWOT分析的技巧和策略
- 华硕服务器系统安装系统安装教程视频,华硕的系统安装教程 华硕u盘安装系统教程...
- 一步一步学Silverlight 2系列(30):使用Transform实现更炫的效果(下)
- php分界符,c# – 如何使用openxml添加分节符下一页?
- win10屏幕亮度调节不见了,调节不了,解决办法
- 微信与多闪之争背后,好友关系链到底是如何窃取的?
- Mysql Workbench 8,连接时显示An AppArmor policy prevents this sender from sending this message to this rec