1、接口请求基本操作
1.1 例子
tips 在view的选项 可以zoom in调整窗口字帖大小。
1、创建一个测试的workspace,并命名为test 2、test后面新增一个add request 3、选择发送GET,URL为一个开源的https://api.apiopen.top/api/sentences 获取每日一句 4、点击send查看内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/8527b3cca47e40dcad9f221a8d4e256e.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/366b9371f3964f0eb7ce0fe8775fcb35.png#pic_center)
Tips:如果提示出现Error: tunneling socket could not be established, statusCode=407错误,参照以下解决办法 ) 关于tunneling socket could not be established , cause=getaddrinfo ENOTFOUND 错误的解决方法
1.2 postman页面布局
![在这里插入图片描述](https://img-blog.csdnimg.cn/62191b7fb6c8454eaa342a332c9e44d3.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f97c24aa265a47a1af6cde950eead624.png#pic_center)
1.2 接口测试流程
1、了解接口是做什么的 2、获得接口文档(来源自开发) 3、设计测试用例 4、执行测试用例(利用postman请求发包) 5、验证返回结果
1.3 http接口报文
HTTP协议格式:http://ip:port/path?param ,其中:
- http://:协议
- ip:资源所在计算机(域名最终会解析为ip)
- port:资源对外发布的端口(80:http默认端口,443:https默认端口)
- path:资源在服务器的位置(tomcat下面,其实是相对webapps的路径)
http是一个简单的请求和响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。http协议是基于url地址的资源请求协议
http报文的组成:HTTP通信过程包括客户端往服务器端发送请求以及服务器端给客户端返回响应两个过程。在此过程中,用于HTTP协议交互的信息就是http报文。http报文分为请求报文和返回(响应)报文。
1.4 简单的接口测试
1、知道接口地址 2、知道接口请求协议 3、知道接口请求方式 4、知道接口请求头(特别是POST请求方式) 5、传递参数类型(表单/请求体)
1.4.1 利用Flask编写本地响应接口
pip install flask 或者 pip3 install flask 代码很直观 不贴注释了,本章节重点在于对postman进行了解
from flask import Flask
from flask import request, jsonify
import json
app = Flask(__name__)
@app.route('/testget', methods=['GET'])
def testget():
name = request.args.get('name', '')
if name == 'zhangsan':
age = 10
else:
age = None
return jsonify(data={name: age})
''' 因为打开网页是GET请求 所以此处method有get只是为了方便打开网页'''
@app.route('/testpost', methods=['GET','POST'])
def testpost():
getdata = request.get_json()
'''data = data对输入data的类型要求为json类型'''
return jsonify(
data = getdata,
extra = {
'message': 'success'
}
)
if __name__ == '__main__':
app.debug = True
app.run()
1.4.1 Get接口简单测试
见面1.1 例子
1.4.2 Post接口简单测试
-
- 选择request类型为post,并输入请求地址和head
-
- 请求地址为
http://127.0.0.1:5000/testpost -
- headers的key为
Content-Type ,value为application/json
![在这里插入图片描述](https://img-blog.csdnimg.cn/e1bbc659cf204b96a5eddc53f74477dc.png#pic_center)
-
- 选择请求体
Body 类型为raw 再选择为JSON -
- 输入以下信息:
{"name":"zhangsan"} -
- 点击send发送
![在这里插入图片描述](https://img-blog.csdnimg.cn/e4a8040a2e1544169074419703b4af94.png#pic_center)
2 变量
2.1 全局变量和环境变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/29568aa70dfe443b9ccaf758745f086f.png#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/41916473750e4220a688ba9d0b44ff7f.png#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/bc44ddeac1864878b11e0739895b71bf.png#pic_center
-
- 同理全局变量作用范围在全局,环境变量只作用在勾选了当前环境的内容当中
-
- 调用变量方式为两个大括号:
{{}} -
- 变量作用不仅在请求内容中,也可以在URL中
-
- 环境变量作用优先级高于全局变量
-
- 例子:如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ba75956cf6c415caab9269e21a91f40.png#pic_center)
2.2 利用test设置环境变量
var jsondata = pm.response.json();
var name = jsondata.data.name;
pm.environment.set("newname", name);
![在这里插入图片描述](https://img-blog.csdnimg.cn/490ebee8b38d46318e13d9914910f6ea.png#pic_center)
TIPS: 如果变量名提前定义好,值不赋值,则可以通过该方法来替换变量的值,达到提前写好脚本的作用。
3 Test断言
3.1 Test 断言作用
1、用于判断返回的body内是否包含某个需要的结果 2、针对这些亲求命令组成的集合进行测试时候显示测试结果通过率 3、Test断言的使用方法可以在Test模块右侧看见提示
3.2 Test断言的简单应用
- 利用Test断言判断返回结果是否包含某个变量
- 直接在右侧点击方法 替换string为所需内容,点击运行即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/e035fa8a7177494384258606c8abeb22.png#pic_center)
4 参数化
4.1 参数化的过程
1、 新建测试集合 2、对于测试请求当中的变量名与参数化文档的标头一致 3、新增断言内容,因为集合运行的pass结果通过断言显示 4、设置参数化运行次数
4.2 新建txt参数测试文档
-
- 新建txt测试文件,其中标头表示姓名和年龄的大小
-
- txt文件如下
txtname,txtage
zhangsan,10
lisi,12
wangwu,13
zhaoliu,14
4.3 参数化测试例子
-
- 编写请求体,其中请求体内的变量与参数化文档的标头一致
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef0e0bb6edc94f908a8ed0f8f4103065.png#pic_center)
-
- 设置断言内容,这里设置为响应代码为200表示成功标志,尤其注意 改变了请求之后 记得保存
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb7fc475762c4ae5a72897183c56ac98.png#pic_center)
-
- 运行集合
![在这里插入图片描述](https://img-blog.csdnimg.cn/ab945e4fe1564e979fa66cf44570f3b8.png#pic_center) -
- 设置参数化运行参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/3ebae7e0842b422d865afc30241cba49.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6b019c693e6948ad89ff5a4522f67c10.png#pic_center)
5 随机数
随机数类型包括随机整数、时间戳等等
-
- 随机整数:调用命令
{{$randomInt}} 即可 -
- 时间戳调用命令
{{$timestamp}}
![在这里插入图片描述](https://img-blog.csdnimg.cn/999e7d3b92d24a788fb69724c008c9f2.png#pic_center)
|