沐沐在测试工作中经常会遇到批量造数据的情况,例如用于演示的较为真实的数据,例如性能测试查询场景需要基于大数据量进行测试等。当数据量较小的时候我们可以使用Excel造数据或者数据库批量数据等方式,但是如果遇到大数据量,例如几万、几十万的数据时,使用以上两种方式就会令人吐血。因此,沐沐今天给大家介绍一个Python的faker库,只需要调用Faker提供的方法,就可以生成各种类型较为真实的数据,例如个人信息、公司信息、数据类信息等;也可以创建自动定义的Provider,随机生成想要的数据。
pip安装:pip install faker
例如我需要造1w条企业数据,代码运行1s后即可生成数据,生成数据如下截图:
以下为生成企业数据的代码,代码不太优美(能用就行),大家在工作中有用到可以做参考。
from faker import Faker import xlwt from faker.providers import BaseProvider import random import shortuuid # 创建自定义Provider class CustomizeProvider(BaseProvider): def risk_type(self): risk_type_list= ['P0', 'P1', 'P2', 'P3'] risk_type=random.choice(risk_type_list) return risk_type def risk_description(self): risk_des_list= ['暂无风险', '高风险', '中高风险', '中风险','低风险'] risk_des=random.choice(risk_des_list) return risk_des # 添加Provider faker = Faker('zh_CN') faker.add_provider(CustomizeProvider) def add_company_info(number): work_book = xlwt.Workbook(encoding='utf-8') work_sheet = work_book.add_sheet('公司测试数据') # 添加字段 head = ['唯一识别码', '公司名称', '统一社会信用代码', '公司性质', '法定代表人', '联系方式', '所在省份', '邮政编码', '公司地址', '街道地址', '经度', '维度', '公司邮箱', '风险类别', '风险描述'] for h in range(len(head)): work_sheet.write(0, h, head[h]) # 添加构造的随机数据 for i in range(number): uuid = shortuuid.ShortUUID().random(length=20) # 随机uuid,可以作为导入数据库的主键信息 company = faker.company() #公司名称 uniscid = faker.ssn() #统一社会信用代码 company_suffix = faker.company_suffix() #公司性质 legen_persoon = faker.name() #法定代表人 phone = faker.phone_number() #联系方式 province = faker.province() #所在省份 postcode = faker.postcode() #邮政编码 address = faker.address() #公司地址 street_address = faker.street_address() #街道地址 longitude = faker.longitude() #经度 latitude = faker.latitude() #维度 company_email = faker.company_email() #公司邮箱 risk_type = faker.risk_type() #风险类别 risk_description = faker.risk_description() #风险描述 #写入Excel work_sheet.write(i + 1, 0, uuid) work_sheet.write(i + 1, 1, company) work_sheet.write(i + 1, 2, uniscid) work_sheet.write(i + 1, 3, company_suffix) work_sheet.write(i + 1, 4, legen_persoon) work_sheet.write(i + 1, 5, phone) work_sheet.write(i + 1, 6, province) work_sheet.write(i + 1, 7, postcode) work_sheet.write(i + 1, 8, address) work_sheet.write(i + 1, 9, street_address) work_sheet.write(i + 1, 10, longitude) work_sheet.write(i + 1, 11, latitude) work_sheet.write(i + 1, 12, company_email) work_sheet.write(i + 1, 13, risk_type) work_sheet.write(i + 1, 14, risk_description) work_book.save('D:\\公司测试数据.xls') print("公司测试数据保存完成") if __name__ == '__main__': add_company_info(10000) #如果造1w条数据,将括号中的数字改成10000即可
The more we share,The more we have.
希望这篇文章对大家有用...