背景:
测试的时候经常会遇到一个耗时的问题,那就是准备测试数据,比如某个场景,需要准备100条数据,如果我们提供手动的去创建,耗时不说,而且也没有技术含量,所以给大家安利一个创建测试数据的办法,可以快速、自动化的创建测试数据。
一、前提准备:
1、已安装Python,PyCharm环境已配置,已安装requests库
2、已安装postman
3、电脑中已存在浏览器:Chrome
二、适用场景
适用场景:批量构造多个数据时 ,可以快速上手 , 快速应用 且 自己手敲的代码很少~
适用产品:Web端
三、需求
新建100个订单
四、操作步骤
4.1、进入Chrome浏览器 ->Web产品系统 ->打开F12
4.2、新建一个你要批量构造的数据后,复制API
复制API 步骤:
例如:手动在页面新建订单,名称为:Auto-20210107-新建订单,新建成功后,从F12中 → Network → 选中新建订单API → 右键 → Copy → 选中Copy as CURL (bash)
如图:
4.3、打开postman,导入刚才复制的API 。
导入步骤:点击左上角的import → Paste Raw Text → 粘贴你刚才复制的内容 → Import ; 如图:
4.4、在postman中导出Python Requests代码 * 省去自己写代码的环节
导出步骤:点击 Code → 选择:Python → 选择:Python Requests → 点击:Copy to Clipboard(复制到剪贴板)
4.5、打开PyCharm,新建文件
新建文件步骤:点击项目/文件夹,右键 → New → Python File → 命名文件
4.6、将复制的Python Requests 复制在 文件中。
这时候可以改下订单名称(因为名称会校验唯一性) ,触发一下 ,看是否可以正常触发,发现报错了,如图:
完整报错信息为:
UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 23-26: Body (‘新建订单’) is not valid Latin-1. Use body.encode(‘utf-8’) if you want to send it encoded in UTF-8.
原因简单来说 就是 json内容中存在中文,所以我们需要自己 转下编码
这里仅需添加一句代码:
payload = payload.encode("utf-8")
加上之后,就可以正常触发了 。
访问对应的页面:已经创建成功了~
但是在这里我推荐另外一种方式
大家先可以将上面新增的代码注释掉
# payload = payload.encode("utf-8")
-
List item
先在代码最上面导入 json
import json
-
再加入一行代码 将 payload 中的请求参数转Json
payload = json.loads(payload)
-
将这串代码中的:response = requests.request(“POST”, url, data=payload, headers=headers)
data 改为 jsonresponse = requests.request("POST", url, json=payload, headers=headers)
再次触发
触发成功~
再更改一下名称,再触发一下
访问对应的页面:已经创建成功了~
7、接下来我们要批量构造数据了 , 这时候要用到 for 循环了~
-
添加代码在对应位置,如图:
for i in range(1,101):
range(1,101)解释:表示从1开始,到101为止(不包括101)取其中所有的整数。
-
然后将for a in range(1,101): 下的代码全部 增加缩进,鼠标选中 for a in range(1,101): 下的所有代码,点击:Tab键
3.在 代码payload = json.loads(payload)后新增代码:payload["name"] = f'Auto-20210107-新建订单-自动触发-{i}'
payload[“name”]
是根据 json中的位置来定的,查看 json 的格式。name处于 json中的第一层。所以通过
payload[“name”]就可以找到。如果要找account对象中的id,则为:
payload[“account”][“id”]
若account为数组,找account数组中的id,则为:
payload[“account”][0][“id”]注意这里的 [0]是根据数组中位置来定的。若数组中仅1个对象,则为0,如果数组中有多个对象,这个数要记得按需变动。
8、最终执行
查看页面,已自动化创建100条~
五、最后
以上就是 Curl+Postman+Python,自动化构造测试数据 的全部细节与步骤,可以很快速的去构造测试数据。建议自己找自己产品中一个简单的"新建"API,按照教程一步一步尝试一下~