接口测试的原理:你发送数据,看返回数据是否正确,返回值类型是否正常,主要点是多种数据的,返回结果正常
一、断言
判断预期结果和实际结果是否一致。
作用:便于重复跑接口测试用例;只需要看最终的结果是否通过即可。
postman提供了一些常用的断言。
注意:Postman是不适合自动化测试的,它所能提供的是半自动化测试,断言只是提供了简单的自动化检查,还是需要人工介入测试的
二、集合
作用:将测试用例放在一个集合中,批量运行一组测试用例。
postman不支持跑集合中特定的几个用例,也不支持禁用集合中的某个用例(jmeter可以实现禁用用例)
三、cookie管理
参考博客:https://blog.csdn.net/loner_fang/article/details/81362261
如果有登录接口的话,后续就不用再配置cookies,原理是
1>用户首先进行登录,如登录成功的话,后台会生成一个唯一的sessionId,并在后台存储对应的用户信息 (redis,数据库等等),并将sessionId写到Cookie。
2>下次该ip访问时,会首先判断Cookie,进而确定该用户是否进行了登录操作。
四、参数化(数据驱动)
postman提供了3中参数化文件格式。分别为txt、csv、json格式。
要实现参数化需要在请求发起之前配置。
///读取文件中的参数,设置成环境变量 data不是文件名,是固定写法
pm.environment.set("username", data.username);
pm.environment.set("password", data.password);
五、关联
参数传递:上一个接口的出参是下一个接口的入参
var JsonData = json.parse(responseBody) # 将接口返回的数据转换成json对象
pm.environment.set(‘变量名’,JsonData.name) # 将接口返回的name值设置为环境变量,供下一个接口调用。
下一个接口直接使用{{变量名}}调用即可。(Postman里面获取变量的语法为:{{变量名}})
六、配置环境变量:测试环境、预生产环境、线上环境
需求是测试环境、预生产环境、线上环境均要做接口测试。
测试 URL 进行定义成变量的形式,这样随着域名怎么变,URL 就不用变更。
因为不同的环境主机会不同,假设测试环境有15个接口需要测试,直接使用url的话就需要新建45个接口用例来分别测试;可如果使用环境变量来实现只需要切换下环境变量即可,只需要写15个接口用例。
新建两套测试环境集,预生产环境和线上环境,里面分别配置baseurl,值填写预生产环境的域名和线上环境的域名。
选择哪套环境变量集,就使用哪套环境变量集里的url值
三、全局变量与环境变量的区别
环境变量可以有多组,但全局变量只有一组,作用于全部用例;
环境变量的优先级高于全局变量,如果全局变量和环境变量中都设置了baseurl,在选择了环境变量的前提下,会使用环境变量,全局变量此时失效。
变量优先级:数据变量(数据驱动)>环境变量>全局变量
七、postman测试导出excel时,响应的内容是一堆乱码 �(编码问题)
取决于后端返回的是什么。后端是以文件流的形式返回的,postman编译不了文件流,所以rbody中返回的是乱码。
这种情况可以直接在浏览器上下载测试。(浏览器会解析文件流并编译)
八、Json相关知识
Json通常用于与服务器交换数据。
json字符串与json对象 |
||
|
Json字符串 |
Json对象 |
定义 |
var str1 = '{ "name": "zxf", "sex": "woman" }'; |
var str2 = { "name": "zxf", "sex": "woman" }; |
调用 |
Json字符串就是字符串,无法调用,需要转换成json对象 |
Json对象可以通过xx.name来调用 |
传输 |
在数据传输的过程中,json是以字符串的形式传递的 |
|
Js操作 |
|
Js操作的是json对象 |
前端在接收服务器数据时,一般是json字符串。前端在处理后端返回的数据前需要先将json字符串转换成json对象。
前后端会规定好接收的是json字符串还是json对象。
九、要运用好postman,还需要有JavaScript的基础
嗯,反正我没有,呜呜呜,加油
十、接口测试用例设计
在使用postman时要学会灵活应用。像postman本身是不提供禁用集合中的单个用例的,这时候可以将暂时不需要的用例移入一个空的集合中即可。还有postman不支持文件参数的循环引用,这时候可以考虑复制参数来实现该功能。