接口测试27--Postman-Tests断言


测试断言Tests

在Tests中如果没有断言,则测试结果(Test Results)会显示没有测试
用于处理响应结果(响应头、响应体/响应正文)、进行断言(判断接口的返回结果是否符合预期)

调试脚本的相关代码

a)console.log(数据);
向控制台输出数据
console:控制台(用于显示日志的一个窗口)
log:日志
b)var  变量名=数据;
定义一个变量(内存中的一个位置,里面存储了=号右边的数据),变量可以在后面反复使用(不用重复去写复杂的数据)
var:variable,变量
c)typeof  数据或变量
查看数据或变量中存储的数据的类型,以决定后面如何处理数据
type:类型
of:的,谁的

响应断言

(1) 就是比对测试结果是否正确
(2) 方法
① 菜单操作/模板

② 代码

获得响应

状态码

responseCode.code:固定写法,必须严格按大小写用
response:响应,表示服务器发来的数据
code:代码
比如200、301、302、403、404、500等都是响应状态码
查看响应状态码:var ztm=responseCode.code;

响应正文

responseBody:固定写法,必须严格按大小写用
body:正文,主体
注意:不论是响应类型是html格式(网页<html>、<table>)、json格式({ })、xml格式,还可以是别的类型,一般响应正文都被改变成了字符串类型

对响应结果的处理

a)text/html格式(纯字符串或者html网页代码格式)
    有很多处理方式,比如split是其中之一
    字符串.split("分割符"):表示对字符串按照分隔符拆成多个字符串
b)json格式
注意:响应正文本身是字符串,即便响应类型是json格式,结果也是字符串,所以必须将字符串转成json字典类型
JSON.parse(responseBody):把响应正文转成json字典(注意响应正文必须是带{ }格式的才可以转)
parse:转换类型
{
    "a":"zhsan",
    "b":{
        "c":20
        }
}
看a的值:
    JSON.parse(responseBody).a
    JSON.parse(resposneBody)["a"]
    引号不能省略,单引号也可以
看c的值:
    JSON.parse(responseBody).b.c
    JSON.parse(resposneBody)["b"]["c"]
    引号不能省略,单引号也可以

断言代码写法

tests['断言消息']=responseBody.has('预期文本')

① tests是关键字
② has表示包含、有
③ 如果包含预期文本,则测试结果为Pass,否则结果为Fail

测试login接口(需求查看exam项目需求)

接口需求:
​	地址:http://IP/exam/login/
​	方法:post
​	参数:username、password
	数据库表:exam.user
​	返回值:text/html
​	预期包含文本(假设测试登录成功的情况):登录验证成功
添加测试数据:
	用户名 test01,密码 123456
	insert into exam.user(id,username,password) values(2,'test01','123456');



测试signup接口(需求查看exam项目需求)

接口需求:
​	地址:http://IP/exam/signup/
​	方法:post
​	参数:username、password、confirm、name
	数据库表:exam.user
​	返回值:json
​	预期包含文本(假设测试成功注册):Success
注意删除数据:
	delete from exam.user where id>1;




tests['断言消息']=实际结果===预期结果

① === 表示相等
② = 表示赋值
③ 对比
	1) has断言是一种模糊匹配,部分数据正确即可,has一般用于text/html类型的断言
	2) ===是一种精确匹配,数据必须完全一致,一般用于json断言

测试登录接口(需求查看exam项目需求)

接口需求:
​	地址:http://IP/exam/login/
​	方法:post
​	参数:username、password
	数据库表:exam.user
​	返回值:text/html
​	预期包含文本(假设测试登录成功的情况):登录验证成功
添加测试数据:
	用户名 test01,密码 123456
要求使用===对登录接口进行断言




测试signup接口(需求查看exam项目需求)

接口需求:
​	地址:http://IP/exam/signup/
​	方法:post
​	参数:username、password、confirm、name
	数据库表:exam.user
​	返回值:json
​	预期包含文本(假设测试成功注册):Success
注意删除数据:
	delete from exam.user where id>1;
要求使用===对注册接口进行断言




响应断言类型

has断言

响应正文:相当于实际结果
		has断言是判断实际结果中包含预期结果(字符串)

json断言

支持has断言(当对实际结果中的汉字断言时,较难)
使用===对json进行部分断言、整体断言
	1)将响应正文()转为json字符串格式
		actual =JSON.parse(responseBody)//将实际结果转换为json字典形式
	2)JSON部分数据断言
		actual['键名']或actual.键名可以获得实际结果中的某个键的值,对于汉字,正常显示
		嵌套json:actual['键名1']['键名2']
	3)json整体断言
​		对json字符串进行格式化(统一格式)
​		postman中不支持json字符串1===json字符串2
​		json字符串格式化方式:JSON.stringify(json字符串)
​		键、字符串数据、日期等全都加双引号定界,数值数据不变
​		键与值之间的空格、键值对之间的空格会被自动删除

测试重复注册,添加JSON部分断言

接口需求:
​	地址:http://接口服务器IP地址/exam/signup/
​	方法:post
​	参数:username、password、confirm、name
​	预期:{'Status':1003, 'Result':'Username  is taken', 'Message':'用户名已被占用'}
注意:数据库中准备数据
insert into exam.user(id,username,password,name) values(2,'test01','123456','测试01');




测试用户重复注册时,验证返回的JSON字符串整体是否正确

接口需求:
​	地址:http://接口服务器IP地址/exam/signup/
​	方法:post
​	参数:username、password、confirm、name
​	预期:{'Status':1003, 'Result':'Username  is taken', 'Message':'用户名已被占用'}
注意:数据库中准备数据
insert into exam.user(id,username,password,name) values(2,'test01','123456','测试01');





免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM