1.Postman执行接口测试
postman请求页签:
Params:get请求传参
authorization:鉴权
headers:请求头
Body:post请求传参
form-data:既可以传键值对参数也可以传文件。
x-www-from-urlencoded:只能够传键值对参数
raw:json,text,xml,html,javascript
binary:把文件以二进制的方式传参。
pre-request-script:请求之前的脚本。
tests:请求之后的断言。
cookies:用于管理cookie信息。
API接口
在京东万象找免费测试的接口
获取新闻 标识:get
接口地址: https://way.jd.com/jisuapi/get
请求方式: HTTPS GET POST
请求示例:https://way.jd.com/jisuapi/get?channel=头条&num=10&start=0&
参数请求
请求示例
channel还可以为
结果
响应页签:
Body:接口返回的数据。
Pretty:以Json,html,XML....不同的格式查看返回的数据。
Raw:以文本的方式查看返回的数据。
PreView:以网页的方式查看返回的数据。
Cookies:响应的Cookie信息
Headers:响应头Test Results”断言的结果。
200状态码
OK状态信息
372MS 响应的时间
37.17KB 响应的字节数。
get请求和post请求的区别:
1.get获取数据 post提交数据
2.post比get安全
3.本质区别是传参的方式不一样:get请求在地址栏后以?方式传,多个参数之间&分隔;post是在body以表单的方式传参
2.Postman环境变量和全局变量
环境变量:就是全局变量。
全局变量:能够在任何接口里面访问的变量。
环境变量名必须一致
生产环境的ip就是域名
获取环境变量和全局变量值:{{变量名}}
3.接口关联
1.json提取器实现接口关联
第一个接口:
console.log(responseBody);
//使用json提取器提取title的值
var result = JSON.parse(responseBody);
//把返回的字符串格式的数据转换成对象的形式
console.log(result.title);
//把title设置为全局变量
pm.globals.set("title", result.title);//title为全局变量名,后一个为全局变量值
第二个接口:{{title}}
2.使用正则表达式实现接口关联
第一个接口:
//使用正则表达式提取器实现接口关联,match匹配。
var resultt = responseBody.match(new RegExp('"title":"(.*?)"'));
console.log(resultt[1]);
//设置为全局变量
pm.globals.set("title", resultt[1]);
第二个接口:{{title}}
匹配到两个值
0:包括左边界和右边界
1:所需值
4.Postman内置动态参数以及自定义的动态参数
Postman内置动态参数:
{{$ timestamp}} 生成当前时间的时间戳
{{$ randomInt}} 生成0-1000之间的随机数
{{$ guid}} 生成速记GUID字符串。
自定义动态参数:
//手动获得时间戳
var times = Date.now();
//设置为全局变量
pm.globals.set("times", "times");
使用:{{times}}
5.其他测试接口
6.Postman断言
断言:一般一个完整的接口测试,包括:请求->获取响应正文->断言,请求和获取响应正文很常见。断言一般是对请求的响应结果做操作,判断预期结果与实际结果是否一致。
常规六种断言
状态断言
## Status code:Code is 200 检查返回的状态码是否为200
业务断言
## Response body:Contains string 检查响应中包括指定字符串
## Response body:Json value check 检查响应中其中json的值
## Response body:is equal to a string 检查响应等于一个字符串
Response headers:Content-Type...检查是否包含响应头Content-Type
Response time is less than 200ms:检查请求耗时小于200ms
在断言中获取自定义动态参数(全局变量)的方式:
pm.globals.get("variable_key")
globals["variable_key"]
globals.variable_key
例如:
pm.test("检查字符串是否包含result", function () {
pm.expect(pm.response.text()).to.include("result"+pm.globals.get("times"));
});
若项目下的接口都需要添加同一个断言,则可以添加全局断言
7.Postman批量运行测试用例
注意:文件上传接口测试需要把文件拷贝到工作路径文件夹并运行读取文件。
8.Postman数据驱动之CSV文件和JSON文件的处理
正例反例一起测试,不同的错误返回不同的错误码。下面的例子是各有一个数据为空。
8.1 csv文件
1.将csv数据文件写好,根据不同变量为空时,错误码不同
2.在Params参数取数据文件的值,通过全局变量获取{{变量名}}
3.修改断言,断言的时候,取断言的值data.取文件的数据
pm.test("检查响应中包括access_token", function () {
pm.expect(pm.response.text()).to.include("data.access_token");
});
4.通过正则表达式判断取值【假如异常用例,没有cookie就无法取值,所以要添加判断】
//判断当返回结果中包括有access_token时才通过正则表达式取值
if(responseBody.search("access_token")!=-1){
//使用正则表达式提取器实现接口关联,match匹配。
var resultt = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(resultt[1]);
//设置为全局变量
pm.globals.set("access_token", resultt[1]);
}
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include(data.assert_value);
});
8.2 json文件
**特别注意:在最后不要加“,”否则文件会报错。
json文件与csv文件是数据构建格式不一样,json文件的其他步骤则跟csv文件一样。
9.测试必须带请求头的接口
通过抓包工具抓取网页请求头信息
常见(加粗)的请求头:
Host | 请求的主机地址 |
---|---|
Connection | Connection |
Accept | 客户端接收到的数据格式 |
X-Requested-With | 异步请求 |
User-Agent | 客户端的用户类型 |
Referer | 来源 |
Cookie | Cookie信息 |
Content-Type | 请求内容的格式 |
10.Postman接口Mock Server服务器
mock 模拟器
当后端的接口还没有开发完成,前端的业务需要调用后端的接口。
1.创建一个新的mock
2.在环境变量中添加地址
3.测试
可以在Body中直接修改需要的返回值
11.Postman的Cookie鉴权,Token的鉴权
什么是cookie?
cookie是一小段文本,格式是key=value。
cookie鉴权原理:
-
当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,并且在响应头的set-cookie里面把生成的cookie信息发送给客户端。
-
当客户端第2-N次访问服务器的时候,那么客户端就会在请求头的cookie带上cookie信 息,从而实现鉴权。
cookie的分类 会话cookie:保存在内存,当浏览器关闭之后就会自动化清除cookie。
持久cookie:保存在硬盘,浏览器关闭后不会清除,只有当失效时间到了才会自动清除。
12.Postman实现接口的加密和解密
目前市面上的加密的方式
- 对称式加密:DES,AES,Base64加密算法
- 非对称加密:双钥(公钥和私钥,【公钥加密,私钥解密】,【私钥加密,公钥解密】)加密,RSA加密算法 (BEJSON网址可用)
- 不考虑解密:MD5,SHA1,SHA3
Postman如何实现加密和解密。
MD5最广泛。
取值{{变量名}}
13.Newman
postman是专为接口测试而生。newman是专为postman而生。newman可以让我们的postman的脚本通过非GUI(命令行)的方式。
运行命令:newman run
常用参数:
-e | 引用环境变量 |
---|---|
-g | 引用全局变量 |
-d | 引用数据文件 |
-n | 指定测试用例迭代的次数 |
-r cli,html,json,junit --reporter-html-export | 指定生成HTML的报告。 |
创建一个文件夹,把环境变量,全局变量、以及测试用例导出生成json文件,放入文件夹,将data.json文件一起。cmd打开命令
执行命令如下: E:\postman>newman run testcase.json -e environment.json -g globals.json -d data. json -r cli,html,json,junit --reporter-html-export report.html
14.Postman+Newman+Jenkins实现接口测试持续集成
1.新建一个项目
2.设置自定义工作空间。
3.执行windows的批处理命令
4.执行系统的Groovy脚本
5.生成的HTML的报告集成到Jenkins
报告查看