https://www.bilibili.com/video/BV134411v7Sj?p=11 视频 特丝汀 接口测试
一 postman发起请求
》get请求四要素:方法,url,参数,请求头
其中get请求,url中的参数,会自动填充到参数列
》post请求: 参数传递格式,头域里边content-type规定
1 演示示例:以该商城登录为例子,www.testingedu.com.cn:8000/Home/user/login.html
信息通过接口文档或者抓包获得
参数传递:post请求的参数传递在body请求体中,body中传递格式设置与请求头中Content-Type保持一致
>x-www-form-urlencoded 传递键值对格式 登录接口测试
>multipart/form-data 可以传递键值对 和 文件格式 上传图片接口测试
注:body参数里边 key下拉框选择file类型
2 post接口请求实战
用友云新发债券查询接口:
查询新发债券的接口,头域,body
3 json格式请求发包 application/json;charset=UTF-8
post url headers-content-type
body-raw-json
住逻辑登录接口
二 断言与变量
天气接口
1变量设置:
get请求,params里边,value列{{}}两个大括号里边填写变量名称,即可实现通过变量调用
其中三个默认的全局变量 $guid $randomint 随机变量 $timestamp 时间戳
全局变量是,postman的所有接口测试项目都可以使用的,环境变量是,选择哪个项目,哪个项目可以使用
>创建变量,右上角设置里边添加
>使用变量,,右上角下拉框选择变量
>调用变量{{cityname}}
globals cityname 海口 海口
ip 1.1.1.1 1.1.1.1 {{ip}}
环境变量优先级高于全局变量,选择了环境变量,不会受到全局变量影响
2 断言:验证返回结果是否符合预期
天气接口
>pre-request Script 发送接口请求之前的操作
右侧有快捷功能,选择相应的功能,自动生成代码
get环境变量 pm.environment.get("cityname"); 参数是环境变量名称
pm.environment.set("cityname","武汉");
>Tests 重点,用于断言操作 ,发送接口请求之后,得到返回信息的操作
返回码 返回头域 响应体
pm.test("验证状态码是200",function(){
pm.response.to.have.status(200); //判断返回的状态码是不是200
});
pm.test("返回主体中是否包含武汉字符",function(){
pm.expect(pm.response.text()).to.include("\\u4e2d\\u56fd"); //这里response.text()获得到的是返回的最原始的信息,也就是raw里边显示的,所以include后边包含武汉应该是unicode编码的字符,而不是武汉的汉字形式
})
pm.test("验证返回的city值是武汉",function(){ 这个比较常用
var jsonData = pm.response.json(); //获取json格式的返回结果
pm.expect(jsonData.city).to.eql("武汉"); //response.json()会把unicode格式解码成汉字形式,所以这里填写武汉 汉字即可
})
pm.response.to.have.body()这个校验的是完整的body ; body is equal to a string
headers:
pm.response.to.have.header("Server"); 头域中包含 Server
pm.expect(pm.response.responseTime).to.be.below(50); 请求时间小于50ms
证券接口
返回是数组形式的
var jsonData=pm.response.json(); jsonData[0]
console.log(jsonData[0].status);
jsonData.data[0].location
for循环
var jsonData = pm.response.json();
for(var i = 0; i<10;i++){
console.log(jsonData.result.items[i].first_comment);
}
三 数据驱动 ddt
测试集,run
百度ip环境
iteration 接口请求执行几次
log fresponse 请求是否记录日志,一般选 all requests
data 数据驱动的方法
天气 百度ip数据驱动
‘数据驱动:从数据文件中读取相应的数据
测试用例中的数据,比如期望返回结果是啥,实际返回结果与期望返回结果做对比
data.cigyname
excel文件存储为csv格式
postman只支持utf-8的编码,excel 是jbk编码,需要对csv文件进行一下编辑,使用代码编辑器,转换成utf-8编码,注意不要有空行,只保留数据行。(notepad++,等)
接口请求使用数据驱动数据 步骤
参数使用变量名称获取{{}}
在Scripts tests测试沙箱中,参数的获取使用data.参数名称的形式来读取
创建测试数据文件:使用csv格式的,注意要改成utf-8编码形式
选择了数据文件之后,预览一下测试文件
四 进阶篇-cookie
tp商城实战
登录抓包,获得 url 请求方法 ,头域 请求参数(注意cookie)
1 已知道cookie,直接在头域添加
2 postman 本身的cookies管理,先调用登录这类的前置接口,来获得cookies,postman会自动保存,再调用,我们需要测试的接口就可以了
一般是postman先请求一下登录接口,然后postman会自动保存cookies管理
五 token与参数传递篇
www.testingedu.cn/inter/index.html
看接口文档提供的接口信息 :注册 登录 获取用户信息 注销
网站功能操作一遍,来看接口文档是否有出入
注册 抓包
登录 抓包
注销
postman创建测试集合
post /auth接口 发包
可以获得token
编写断言 ,验证返回是否成功,根据返回信息得到token的值
环境变量方法:
设置环境变量脚本
获得返回值token值,存储到环境变量中pm.environment.set("testToken",pm.reponse.json().token);
添加环境变量操作
post /register
头域:token
注册成功断言
post /login
url headers token {{testToken}}
userid 保存为环境变量
/getUserId
/logout 注销成功断言
ddtdata
六 postman持续集成
newman安装,先下载node.js 如果没成功,设置PATH npm nodejs
newman有啥用 跟postman是不是重复工作
定时执行脚本
jenkins持续集成
构建任务,min hour day month week
genkins 构建任务执行之后乱码设置 ,windows环境变量 JAVA_TOOL_OPTIONS utf-8
修改玩重启jenkins