一、需求说明

前段时间测试项目的用户注册和信息编辑功能,需要填写用户的姓名、身份证、电话、住址等相关信息,为了更加接近真实的情况,需要提前准备一批测试数据。

人为手工造数据容易出错并且比较影响效率,于是选择使用Python来批量生成相关的测试数据。

注:以下文中生成的均为虚拟数据

二、准备工作

经过一番百度调研分析之后,决定使用Python中的第三方库:faker

安装

pip install faker

Python批量生成测试数据_测试数据

导库

from faker import Faker

三、代码实现

我们要生成的测试数据均为中文,参考faker库官方文档,在生成实例时需要指定语言

Python批量生成测试数据_python_02

单条生成

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)

运行结果:

Python批量生成测试数据_python_03

批量生成

使用for循环批量生成1000条数据

if __name__ == "__main__":
    for i in range(1000):
        v = mem_info_gen()
        print(f"第{i + 1}条:{v}")

运行结果:

Python批量生成测试数据_python_04

导出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

运行结果:

Python批量生成测试数据_测试数据_05