本章主要讲述接口自动化实现,因为在测试过程中我们经常需要手动去造一些假数据,首先我们可以用python取代手动造数据,然后运用postman实现接口的自动化
我的操作步骤一般是这样的:
1、首先会把要调用的接口,先手动造一条假数据在postman中调用,查看是否调用成功.
2、调用成功后,查看接口哪些请求参数需要进行更改,那就将这部分参数用python造出来,写入到txt或csv中
3、然后打开python的Runner模式,自动读取数据文件中的数据,自动请求
一般关于接口的请求参数格式,如果有限制的需要根据接口文档进行定义,因为在写程序时,参数格式就严格按照这个标准写
例如,我以下需要造参数的接口的数据格式如下:
代码如下:
from faker import Faker
import pymysql
import random
import time
import string
# 造人员数据
class Create_Data(object):
def __init__(self):
# 选择中文
fake = Faker("zh_CN")
r_num = 40 # 指定随机数长度
# 1、id :这个任意就行,但不能重复 random.randint(10000000, 99999999) -->这个我自动生成8位的随机数
# 2、RYXXBZ:人员信息标识 后端限定必须为【40位大小写字母+数字组合】
# r_num = 40 # 指定随机数长度
# string.ascii_letters:生成大小写字母(type:字符串)
# string.digits:生成数字(type:字符串)
# RYXXBZ = ''.join(random.sample(string.digits + string.ascii_letters, r_num)) -->采用相关方法组成40位规则
# 3、XM:姓名 fake.name() -->fake的方法
# 4、XBDM: 【1代表男 2代表女】 random.randint(1, 2) -->随机获取1,2
# 5、ZJHM:身份证号码 fake.ssn() -->fake的方法
# 生成数据改变循环体来控制数据量rang(?)
self.data_total = [
[random.randint(10000000, 99999999), ''.join(random.sample(string.digits + string.ascii_letters, r_num)),
fake.name(), random.randint(1, 2), fake.ssn()]
for x in range(100)]
print(self.data_total)
# 写入到txt
def deal_txt(self):
#这里写你要保存到的路径
with open("D:\\develop\\apache-jmeter-3.1\\bin\\peopleTest.txt", "w", errors="ignore", encoding="utf-8") as output:
#注意这里写入到txt文件的字段需要与postman中匹配的字段名称及顺序保持一致
output.write(
"id,RYXXBZ,XM,XBDM,ZJHM\n")
for row in self.data_total:
rowtxt = "{},{},{},{},{}".format(
row[0], row[1], row[2], row[3], row[4])
output.write(rowtxt)
output.write("\n")
output.close()
print("Processing completed to txt")
if __name__ == '__main__':
data = Create_Data()
data.deal_txt()
2.3.1)postman测试校验规则
2.3.2)点击Runner,并填写信息
2.3.3)点击执行