一、需求说明
前段时间测试项目的用户注册和信息编辑功能,需要填写用户的姓名、身份证、电话、住址等相关信息,为了更加接近真实的情况,需要提前准备一批测试数据。
人为手工造数据容易出错并且比较影响效率,于是选择使用Python来批量生成相关的测试数据。
注:以下文中生成的均为虚拟数据
二、准备工作
经过一番百度调研分析之后,决定使用Python中的第三方库:faker
安装
pip install faker
导库
from faker import Faker
三、代码实现
我们要生成的测试数据均为中文,参考faker库官方文档,在生成实例时需要指定语言
单条生成
fk = Faker(['zh_CN']) # 生成使用中文的实例
def mem_info_gen():
name = fk.name() # 姓名
phone = fk.phone_number() # 电话
id_card = fk.ssn() # 身份证
birth = f"{id_card[6:10]}/{id_card[10:12]}/{id_card[12:14]}" # 生日
add = fk.address() # 地址
prov = add[:3] # 省市
job = fk.job() # 工作
v_list = [name, phone, id_card, birth, add, prov, job] # 组装为列表
return v_list
if __name__ == "__main__":
v = mem_info_gen()
print(v)
运行结果:
批量生成
使用for循环批量生成1000条数据
if __name__ == "__main__":
for i in range(1000):
v = mem_info_gen()
print(f"第{i + 1}条:{v}")
运行结果:
导出excel
为方便测试时使用,将生成的数据导出到excel中,这里选用pandas库
if __name__ == "__main__":
k_list = ['姓名', '电话', '身份证', '生日', '地址', '省市', '工作']
df = pd.DataFrame(columns=k_list) # 创建df
for i in range(1000):
v = mem_info_gen() # 生成数据
m_info = dict(zip(k_list, v)) # 组装为字典
df_info = pd.DataFrame([m_info]) # 创建数据df
df = pd.concat([df, df_info]) # 拼接df
df.to_excel('test_data_member_info.xlsx', index=False) # 导出excel
运行结果: