下载
postman下载官方网址: https://www.postman.com/downloads/?utm_source=postman-home
下载好之后双击安装包,会自动安装,无需操作
操作界面介绍
get请求
天气预报查询接口
调用地址:https://jisutqybmf.market.alicloudapi.com/weather/query
请求方式: GET
请求参数(Headers):
Authorization | APPCODE 36a6d64593884af1971d218d14a23f9d |
---|---|
请求示例(无)
正常返回结果
{
"status": "0",
"msg": "ok",
"result": {
"city": "安顺",
"cityid": "111",
"citycode": "101260301",
"date": "2015-12-22",
"week": "星期二",
"weather": "多云",
"temp": "16",
"temphigh": "18",
"templow": "9",
"img": "1",
"humidity": "55",
"pressure": "879",
"windspeed": "14.0",
"winddirect": "南风",
"windpower": "2级",
"updatetime": "2015-12-22 15:37:03",
"index": [
{
"iname": "空调指数",
"ivalue": "较少开启",
"detail": "您将感到很舒适,一般不需要开启空调。"
},
{
"iname": "运动指数",
"ivalue": "较适宜",
"detail": "天气较好,无雨水困扰,较适宜进行各种运动,但因气温较低,在户外运动请注意增减衣物。"
}
],
"aqi": {
"so2": "37",
"so224": "43",
"no2": "24",
"no224": "21",
"co": "0.647",
"co24": "0.675",
"o3": "26",
"o38": "14",
"o324": "30",
"pm10": "30",
"pm1024": "35",
"pm2_5": "23",
"pm2_524": "24",
"iso2": "13",
"ino2": "13",
"ico": "7",
"io3": "9",
"io38": "7",
"ipm10": "35",
"ipm2_5": "35",
"aqi": "35",
"primarypollutant": "PM10",
"quality": "优",
"timepoint": "2015-12-09 16:00:00",
"aqiinfo": {
"level": "一级",
"color": "#00e400",
"affect": "空气质量令人满意,基本无空气污染",
"measure": "各类人群可正常活动"
}
},
"daily": [
{
"date": "2015-12-22",
"week": "星期二",
"sunrise": "07:39",
"sunset": "18:09",
"night": {
"weather": "多云",
"templow": "9",
"img": "1",
"winddirect": "无持续风向",
"windpower": "微风"
},
"day": {
"weather": "多云",
"temphigh": "18",
"img": "1",
"winddirect": "无持续风向",
"windpower": "微风"
}
}
],
"hourly": [
{
"time": "16:00",
"weather": "多云",
"temp": "14",
"img": "1"
},
{
"time": "17:00",
"weather": "多云",
"temp": "13",
"img": "1"
}
]
}
}
失败返回结果
错误码定义
错误码 | 错误信息 | 描述 |
---|---|---|
201 | City and city ID and city code are empty | 城市和城市ID和城市代号都为空 |
202 | City does not exist | 城市不存在 |
203 | There is no weather information in this city | 此城市没有天气信息 |
210 | No information | 没有信息 |
天气预报接口
添加一个请求,并添加请求头
添加参数,然后发送请求
Cnode社区
主题首页
请求地址:http://47.100.175.62:3000/api/v1/topics
请求方式:get
请求参数
- page Number 页数
- tab String 主题分类。目前有 ask share job good
- limit Number 每一页的主题数量 最大值为50,超过50按50计算
- mdrender String 当为 false 时,不渲染。默认为 true,渲染出现的所有 markdown 格式文本。
请求实例:
post请求
post请求通【body】下面的【raw】下面的【json】来进行传递参数,传递的数据是json格式
json格式数据
{
"key":"value",
"key":"value",
"key":"value",
"key":"value"
}
例:
{
"name":"张三",
"age":34,
"sex":"男"
}
所有编码软件里面都只支持英文的标点符号
#string 是字符串类型,相当于mysql中的char,varchar。
请求方式
一般人们使用的请求方式是get和post请求,但是还有put和delete请求
get——查询
post——添加数据
put——-修改数据
delete——删除数据
变量
postman有两种变量类型
- 全局变量
- 环境变量 ```sql 设x=100 设置一个x变量,x的值为100.
token=47c57522-47a7-4627-bdc4-0f05ccb91ac0
设置一个token变量,变量值为47c57522-47a7-4627-bdc4-0f05ccb91ac0
<a name="ziyK5"></a>
## 设置全局变量
![image.png](https://cdn.nlark.com/yuque/0/2022/png/22358770/1641463906191-f451fdf4-ffd8-4823-9e30-03af7319d929.png#clientId=u82a6b15a-c656-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=479&id=uad51928e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=479&originWidth=739&originalType=binary&ratio=1&rotation=0&showTitle=false&size=46608&status=done&style=none&taskId=ue947ca08-4203-4c1a-a6c2-cf8e2204637&title=&width=739)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22358770/1641463999472-6344bc1c-a51b-43de-a9d0-89cecbbffd66.png#clientId=u82a6b15a-c656-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=419&id=u83591a7e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=722&originWidth=897&originalType=binary&ratio=1&rotation=0&showTitle=false&size=42538&status=done&style=none&taskId=u9c03a128-007e-4bf7-af7f-9dc1d07616d&title=&width=521)
<a name="cbyFc"></a>
## 使用变量
- 使用 {{变量名}} 来进行引用变量(环境变量,全局变量都是这种方式引用)
把token,url都设置为全局变量<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22358770/1641464312694-4ab1e57f-7e85-4573-b46a-86c2edb9a0f0.png#clientId=u82a6b15a-c656-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=431&id=u5a65f43d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=560&originWidth=731&originalType=binary&ratio=1&rotation=0&showTitle=false&size=54591&status=done&style=none&taskId=u8b5c13f7-ac6c-457d-86e3-1834a5c2b68&title=&width=562)<br />在接口中引用变量<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22358770/1641464456507-79e1f290-3cd8-4a3f-97d0-a8d46511efd3.png#clientId=u82a6b15a-c656-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=292&id=u9fa20af1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=409&originWidth=829&originalType=binary&ratio=1&rotation=0&showTitle=false&size=32707&status=done&style=none&taskId=ua03219b8-dc0d-41c7-814c-288fc36fd98&title=&width=592)
**作业:**
1. get和post请求的区别是什么?
[get和post的区别.xmind](https://www.yuque.com/attachments/yuque/0/2022/xmind/22358770/1641527508354-741e50f7-e6b8-47e9-95cd-efea6d30ae3d.xmind)
2. 完成主题收藏接口,评论接口(选做)
<a name="EB5n5"></a>
# 上下游传参
把上游接口返回的参数,给下游接口进行使用
比如:新建主题返回结果
```sql
{
"success": true,
"topic_id": "61d7ebaaf9c9c17ef86fd952"
}
下游编辑主题中需要使用,topic_id这个参数
{
"accesstoken":"bcd83625-0292-41f9-b720-255596c68336",
"topic_id":"61d7ebaaf9c9c17ef86fd952", #上游接口的主题id
"title":"凡猫79人人高薪",
"tab":"ask",
"content":"谁帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅帅"
}
练习
- 把cnode社区接口做完
- 把请求前缀改为变量
- 把token设置为变量,在接口中引用
- 把topic_id设置为变量,在接口中引用
新建主题
MD5 加密
https://www.sojson.com/md5/ #MD5加密的网站
作业
- http https 的区别
- 常见的状态码以及含义
- conde的社区重新做一遍
- 把新峰商城 获取首页数据,获取分类数据,商品详情接口,商品搜索接口,以及其他的接口,大家都可以做一下(选做)
状态码 | 含义 |
---|---|
2** | 请求成功 |
3** | 重定向 |
4** | 客户端错误 |
5** | 服务器错误 |
200 | 请求成功 |
301 | 重定向,被永久转移到其他的url |
400 | 错误请求,因发送的请求语法错误,服务器无法正常读取 |
401 | 请求未经授权,需要身份验证 |
403 | 禁止访问,客户端没有权利访问请求的内容 |
404 | 请求的资源不存在(url错误) |
500 | 内部服务器错误 |
502 | 无效网关 |
JSON格式数据提取
当要提取json串里面的值的时候{ } 里面的内容用 . 提取, [ ] 里面的内容用下标提取
例子:
var a={"success": true,"topic_id": "61da744af9c9c17ef86fe403"}
提取topic_id,直接a.topic_id即可
var b={ "yonghu":[{"name":"张三"},{"name":"李四"},{"name":"王五"}]}
提取第一个name的值
b.yonghu[0].name
动态设置变量
把登录返回的token值设置为环境变量
//获取返回的json串
var jsondata=pm.response.json();
//把data(token)定义为全局变量
pm.environment.set("token",jsondata.data);
//pm.environment.set("变量名",变量值);
练习
- cnode的社区,
- 创建一套cnode社区环境变量
- 把请求前缀,token值设置为环境变量,在下面的接口中引用
- 把新建主题的返回的topic_id设置为动态的变量,在编辑主题,收藏主题,新建评论中引用
- 把新建评论返回的评论id设置为动态的变量,在评论点赞接口中引用
断言
编写测试用例时有一个预期结果和实际结果,
断言其实就是一个预期结果,然后它会跟实际返回的结果进行一个对比,实际结果与预期结果一致则运行成功,不一致则运行失败。
状态码断言
pm.test("提示语,方便你或者别人了解断言的意思", function () {
pm.response.to.have.status(具体的状态码);
});
json断言
pm.test("提示语", function () {
var jsonData = pm.response.json();
pm.expect(json路径).to.eql(期望值);
});
练习
- 完成新峰商城中 用户注册,用户登录,获取用户信息,获取首页数据,商品详情接口,购物车列表接口,添加商品到购物车接口,添加地址接口,我的收获地址列表接口,生成订单接口,订单列表接口,确认收货接口。
- 观察接口之间的关系,使用动态传参的方式传递参数,给接口都添加一个断言(断言随意,可以是状态码,也可以是某个主要字段)。
postman csv参数化
在测试功能的时候,我们不仅要考虑正常的场景,还需要考虑异常场景
接口测试也是,我们不仅要测试正常的数据,我们也要考虑异常的数据
accesstoken | title | tab | content |
---|---|---|---|
bcd83625-0292-41f9-b720-255596c68336 | 1234567890 | ask | qwertyuiop |
b675e4c6-8dcd-4995-8960-c | 1234567890 | ask | qwertyuiop |
1234567890 | ask | qwertyuiop | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | ask | qwertyuiop | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 123456789 | ask | qwertyuiop |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | qwertyuiop | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | kas | qwertyuiop |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | qwertyuiop |
引用csv文件的时候用引用变量的方式 {{ }},进行引用,引用的名字必须跟csv文件中字段的名字一致
选择咱们保存的csv文件,选择好之后可以预览一下咱们的csv文件,没有问题之后可以点击 run 运行
运行完可以看到具体的结果
#可以给接口添加一个断言,然后就可以观察哪些数据通过了,哪些数据没有通过
编辑主题
accesstoken | title | tab | content | id |
---|---|---|---|---|
bcd83625-0292-41f9-b720-255596c68336 | 1234567890 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 |
b675e4c6-8dcd-4995-8960-c | 1234567890 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 |
1234567890 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 123456789 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | qwertyuiop | 61dbda21d00e6a36f3457fe7 | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | kas | qwertyuiop | 61dbda21d00e6a36f3457fe7 |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | 61dbda21d00e6a36f3457fe7 | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | qwertyuiop | 61dbda21d00e6a36f3457fe7 |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | qwertyuiop | |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | qwertyuiop | 1234567890asdfgh |
b675e4c6-8dcd-4995-8960-c200aa54ffe2 | 1234567890 | ask | qwertyuiop | 61daa081d00e6a36f3457333 |
总结
postman实操
企业微信会议管理
获取access_token
请求方式:GET(HTTPS)
请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
注:此处标注大写的单词ID和SECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的标注,不再说明。
若企业安装了第三方应用,该服务商可通过“获取企业access_token”获得此调用凭证。
参数说明:
参数 | 必须 | 说明 |
---|---|---|
corpid | 是 | wwfa4857134c5d5eec |
corpsecret | 是 | mLGKGon5pX0pu4LvEbqxD5JHzGGmsGPEAlEW_nUB6Us |
完成:添加会议室,查询会议室,编辑会议室,删除会议室。
https://work.weixin.qq.com/api/doc/90000/90135/93619
预定会议室
https://work.weixin.qq.com/api/doc/90000/90135/93620
转换时间为时间戳的网站
https://developer.aliyun.com/skills/timestamp.html
复习
做接口测试之前必须明白的事情
- 请求方法
- 请求地址
- 请求头
- 请求参数
怎么做多接口怎么测试
通过上下游传参的方式,传递参数,把上游接口的响应结果设置为变量,下游接口引用变量
怎么做接口加密
我们这边登录的时候通过对密码MD5加密,来进行登录
token机制
- http协议是无状态的,无连接的,所以服务器无法判断,请求是否是同一个客户端进行发送的。
- 登录之后,会返回给客户端一个token值,这个token值就相当于客户端的身份证,用来识别发送请求的是哪一个客户端。
- token会在客户段保存一份(每次发送请求的时候都会带上token),服务器保存一份
做完接口测试,为什么还要做功能测试
接口测试无法代替功能测试,
登录:接口测试无法测试出,页面是否正确,它只能保证接口没有问题。比如点击登录按钮,是否能进行登录,点击输入框是否能输入数字,这些属于前端页面的测试,接口测试都无法测试到。
接口测试:看接口是否能正常响应,是否有异常处理。
功能测试:看前段页面功能是否正常,是否能显示正确的数据。
断言使用场景
比如:csv参数化的接口,回归测试,冒烟测试
不适合使用的场景:新开发的接口,新开发的接口里面可能存在许多的bug,这个时候就不适合添加断言。
postman主要学习内容
设置全局变量,环境变量,使用变量,设置动态变量,添加json断言,状态码断言,csv参数化。