目录
1、背景介绍
接到一个需要,要测试A接口,但是有一个参数"ProcessList"可以无限制输入,所以需要构造约两百条的数据,测试一下代码的健壮性。但是数据量太多了,手工造数太慢,因此采用脚本的形式造数,几分钟搞定。
2、接口api信息
接口信息已经去掉了敏感信息,跟原接口有出入,但是结构是差不多的。
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<web:add>
<Creator>{"LoginName":"test01"}</Creator>
<Subject>自动生成</Subject>
<Id></Id>
<ProcessList>
<Id></Id>
<AppName></AppName>
<Number></Number>
<Subject></Subject>
<CreateTime></CreateTime>
<CreatorName></CreatorName>
<CreatorLoginName></CreatorLoginName>
<Index></Index>
</ProcessList>
</web:add>
</soapenv:Body>
</soapenv:Envelope>
3、批量造数的代码
当时正在查询数据库,刚好就数据下载下来了,通过读取文件的方式获取数据。这里也可以修改成读数据库获取数据。
# 导入csv模块,用于读取CSV文件
import csv
# 创建一个空列表,用于存储构造的XML数据
datas_list = []
# 使用'with'语句打开'data.csv'文件,确保文件在使用后被正确关闭
with open('data.csv', mode='r') as f:
# 创建一个csv.DictReader对象,用于读取CSV文件中的数据,并将其解析为字典形式
reader = csv.DictReader(f)
# 遍历CSV文件中的每一行数据
for row in reader:
# 从CSV行字典中提取所需的字段值
subject = row['SUBJECT']
number = row['NUMBER']
index = row['INDEX']
app_name = row['APP_NAME']
create_time = row['CREATE_TIME']
data_id = row['ID']
loginname = row['LOGIN_NAME']
name = row['NAME']
# 构造一个XML格式的<ProcessList>字符串
data = f"""
<ProcessList>
<Id>{data_id}</Id>
<AppName>{app_name}</AppName>
<Number>{number}</Number>
<Subject>{subject}</Subject>
<CreateTime>{create_time}</CreateTime>
<CreatorName>{name}</CreatorName>
<CreatorLoginName>{loginname}</CreatorLoginName>
<Index>{index}</Index>
</ProcessList>
"""
# 将构造的XML数据添加到datas_list列表中
datas_list.append(data)
# 使用'with'语句打开'new_data.txt'文件,用于写入构造的XML数据
with open('new_data.txt', 'w') as f:
# 使用writelines方法将datas_list列表中的所有字符串写入文件
f.writelines(datas_list)
说明:
1. 该脚本从'data.csv'文件中读取数据,并为每一条记录构造一个XML格式的<ProcessList>片段。
2. 构造好的XML数据片段被存储在一个列表中,并最终写入'new_data.txt'文件。
3.因为代码没有构造完整的SOAP请求体。最后需要将'new_data.txt'文件中的数据copy过去。(这步骤也可以改成用代码构造完整的)