文章目录
1、接口请求的类型
1.1GET请求
忽略~
1.2POST请求
1.3文件上传
2.设置环境变量
场景一:
- 在测试过程中,都是使用一个测试地址,就可以把被测地址设置为环境变量
1.右上角有个No Environment,点击查看Environment-Add
2.设置对应的变量值,key-value,可以设置多个(根据需要设置),需要点保存才可使用!
3.选择需要使用的环境变量,使用{{就是在环境变量里面设置的variable}}括起来
场景二:
- 设置全局变量,把登陆的Token设置为全局变量
场景三:
- 上一个请求的结果作为下一个请求接口的入参
/*
1.在上一个接口中获取title的结果数据,并设置为环境变量
2.在下一个接口中直接只用{{变量名}} 即可
*/
// 或者一个title作为下一个请求接口的入参
var title0 = pm.response.json().aaData[0].itemVOList[0].title
console.log(title0)
pm.environment.set("search_title", title0);
// 下一个接口的断言
// 判断状态是否为200
pm.test("状态码是否等于:200", function () {
pm.response.to.have.status(200);
});
pm.test("判断查询出的条数是否等于:1", function () {
console.log(pm.response.json().iTotalRecords)
pm.expect(pm.response.json().iTotalRecords).equal(1);
});
3.Pre-request Script(请求前设置)
// 定义一个新的变量来接受需要改变的值
var new_kw = pm.variables.get("kw");
console.log(new_kw)
// 重新定义一个新的值,如果需要定义多个的话 使用数据驱动 data.xx
var new_kw = "book"
// 设置变量 kw 为新的值
pm.variables.set("kw", new_kw)
console.log(new_kw)
// 使用数据驱动断言
// 获取json数据
var json_data = pm.response.json()
pm.test("校验翻译的单词是否正确:" + json_data.data[0].k , function () {
pm.expect(json_data.data[0].k).to.include(data.kw);
});
1.未改变之前的变量值
2.使用pre-request Script修改接口参数
3.请求的结果
4.数据驱动请求的结果断言
4.运行测试集
5.Tests 断言
- 返回数据为Json格式
// 判断状态码是否为200
pm.test("状态码为200", function () {
//pm:postman response:影响的接口信息 to.have.status:状态是否等于200
pm.response.to.have.status(200);
});
// 判断返回的响应结果是否包含某个字段
pm.test("message为ok", function () {
// var 定义一个变量 pm.response.json()获取响应的json信息
var jsonData = pm.response.json();
// 获取json对应依次获取使用.
pm.expect(jsonData.data.aData).includes("OK");
});
// 获取微信内容的标题
// 获取长度
var num = pm.response.json().iTotalRecords
// 循环获取每个封面的标题
for (var i=0; i<num;i++){
var title = pm.response.json().aaData[i].materialTitle
pm.test("包含测试的标题:" + title, function () {
pm.expect(title).to.includes("测试");
});
console.log(title)
}
Tests的八大断言
// 1.检查接口的状态码
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 2.检查响应结果是否包含某个字符串
pm.test("Body matches string", function () {
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
或
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
// 3.对json返回的字符串做校验
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
// 4.校验返回的请求头信息
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
// 5.校验接口的响应时间
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// 6.校验接口的状态码是否包含以下状态
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
// 7.校验响应中状态是否包含Created
pm.test("Status code name has string", function () {
pm.response.to.have.status("Created");
});
// 8.转化XML格式的响应成JSON对象
var jsonObject = xml2Json(responseBody);
## `https://www.jianshu.com/p/762076988bcb`
- 断言的方式
# 1.Json 提取器
var jsonData = pm.response.json();
console.log(jsonData.data.value)
# 2.正则表达式
str1 = "12dsds4d512s1d2ds"
match是使用正则表达式进行匹配, new RegExp是创建匹配规则
str2 = str1.match(new RegExp('12(.*?)4'))[1];
console.log(str2)
6.测试驱动
1.数据驱动的变量设置
2.对请求的接口进行断言
// 对每次请求的数据进行断言
pm.test("CRM登陆接口测试用例", function () {
pm.expect(pm.response.text()).to.include(data.expect);
});
3.选择对应的数据文佳
4.执行结果
7.Newman持续集成
-
安装node:
- 安装nodejs:
http://nodejs.cn/download/
根据不同系统下载对应的安装包 msiexec /package 文件包的路径(最好是绝对路径)
- 安装nodejs:
-
验证是否安装成功:
https://www.cnblogs.com/yangjiming/p/12039700.html
参考此篇文献node -v npm -v
+ 安装newman
```shell
npm install newman
npm install -g newman --registry=http://registry.npm.taobao.org
生成html报告需要安装newman-reporter-html
npm install -g newman-reporter-html
newman -v
# 测试不成功的话 设置系统环境变量
添加:系统变量NODE_PATH:C:\Program Files\nodejs\node_modules
path添加:C:\Users\Du\AppData\Roaming\npm
再次测试 win+R 打开命令行窗口,输入: newman -v
输出:5.2.2
- Newman 运行postman collections
- 1.导出collections:在collection选项菜单选择export,导出为json文件
- 2.newman执行 newman run 导出的json文件名 通过newman命令运行测试集
newman run C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json -d C:\Users\Du\Desktop\Postman\crm-test\data_file.csv -e C:\Users\Du\Desktop\Postman\crm-test\数据驱动环境.postman_environment.json
newman run C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json --reporters html --reporter-html-export C:\Users\Du\Desktop\Postman\crm-test\html01.html
# --reporters 输出的测试报告
# -d 数据驱动的文件地址
# -e 环境变量的json地址
- newman执行测试常用的参数
-e --environment 使用环境变量文件或者url
newman run 测试集地址 -e 环境变量地址
-g --global 使用全局变量文件或url,先导出全局变量文件
-d --iteration-data 指定使用的数据驱动文件
newman run 测试集地址 -d 驱动文件地址
-n 指定测试集循环的次数
newman run 测试集地址 -n 2
- 命令行的执行结果
1.Windows的定时任务参考:
参考:https://www.cnblogs.com/bmwchampion/archive/2010/08/21/autotimingexcutejob.html
2.Jenkins集成
1.jenkins创建一个自由风格的项目
2.设置构建环境
newman run C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json -d C:\Users\Du\Desktop\Postman\crm-test\data_file.csv -e C:\Users\Du\Desktop\Postman\crm-test\数据驱动环境.postman_environment.json --reporters html --reporter-html-export C:\Users\Du\Desktop\Postman\crm-test\html1.html
【问题】
# 1. npm安装报错,删除用户下的.npmrc文件
解决:https://blog.csdn.net/qq_35457469/article/details/102924524
https://www.cnblogs.com/miaomiaoka/p/11168642.html
# 2.无法找到newman命令
解决:带上newman的全路径