Python Faker随机生成测试数据(干货)
前言
Faker是一个Python软件包,可为您生成伪造数据。无论您是需要引导数据库,创建美观的XML文档,
填充持久性以进行压力测试还是匿名化来自生产服务的数据,Faker都是您的理想之选。不论您这边需要创建多少条数据,无非是一个for循环就解决问题了。
基本用法
用pip安装:pip install Faker
官方文档:
Welcome to Faker’s documentation!
github地址:
点❥(^_-)的人还真不少哦,值得学习呀!
api介绍
我们可以用dir(fake)
查看一下,它能fake近300种东西出来,并且faker还支持上几十种语言简直不能太强大。
dir(fake)
我们常用语种
en_GB-英语(英国)zh_CN-英语(美国)ja_JP-日语 ko_KR-韩文 ru_RU-俄语 fr_FR-法语 zh_CN-中文(中国)zh_TW-中文(繁体)
常用的方法分类
- address 地址
- person 人物类:性别、姓名等
- barcode 条码类
- color 颜色类
- company 公司类:公司名、公司email、公司名前缀等
- credit_card 银行卡类:卡号、有效期、类型等
- currency 货币
- date_time 时间日期类:日期、年、月等
- file 文件类:文件名、文件类型、文件扩展名等
- internet 互联网类
- job 工作
- lorem 乱数假文
- misc 杂项类
- phone_number 手机号码类:手机号、运营商号段
- python python数据
- profile 人物描述信息:姓名、性别、地址、公司等
- ssn 社会安全码(身份证号码)
- user_agent 用户代理
fake.country() # 国家
fake.city() # 城市
fake.city_suffix() # 城市的后缀,中文是:市或县'市'
fake.name() # 姓名
fake.last_name() # 姓
fake.ean8() # 8位条码
fake.ean13() # 13位条码
faker函数太多了,我就不依依介绍了,有兴趣的看下看
faker常用函数:参考:https://www.cnblogs.com/felixwang2/p/9246279.html
简单的实例
没错短短三行代码就实现随机创建数据
from faker import Faker fake = Faker('zh_CN') //设置语种 fake.name()
批量创建数据
小编这里写了4个场景来批处理数据并且保存
- 100条数据写入txt
- 100条数据如excel
- 100条数据写入mongodb数据库
- 100条数据写入mysql数据库
话不多少,这接撸代码。
执行下面代码生成txt、excel、mongodb、mysql数据
""" * Create by dell on 2020/6/11 * Author :wencheng * 微信公众 :自动化测试 To share """ from faker import Faker import pandas as pd from urllib import parse from pymongo import MongoClient import pymysql class Create_Data(object): def __init__(self): # 选择中文 fake = Faker('zh_CN') # 生成数据改变循环体来控制数据量rang(?) self.data_total = [ [fake.name(), fake.job(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(), fake.date_time(tzinfo=None)] for x in range(100)] print(self.data_total) # 写入excel def deal_excel(self): df = pd.DataFrame(self.data_total, columns=['name', 'job', 'company', 'phone_number', 'company_email', 'address', 'date_time']) # 保存到本地excel df.to_excel("data_total.xlsx", index=False) print("Processing completed to excel") # 写入txt def deal_txt(self): with open('data_total.txt', 'w', errors='ignore', encoding='utf-8') as output: output.write('name,job,company,phone_number.company_email.address.date_time\n') for row in self.data_total: rowtxt = '{},{},{},{}'.format(row[0], row[1], row[2], row[3]) output.write(rowtxt) output.write('\n') output.close() print("Processing completed to txt") # 写入mongodb def deal_mongodb(self): port = 27017 host = 'localhost' user_name = 'root' db_name = 'data' passwd = 'root' passwd = parse.quote(passwd) mango_uri = 'mongodb://%s:%s@%s:%s/%s' % (user_name, passwd, host, port, db_name) # 链接时需要指定数据库 conn = MongoClient(mango_uri) # 创建链接 db = conn[db_name] # 连接coder数据库 mongodata = db['data_total'] for val in self.data_total: mongodata.insert( {"name": val[0], 'job': val[1], 'company': val[2], 'phone_number': val[3], "company_email": val[4], 'address': val[5], 'date_time': val[6]}) print("Processing completed to mongodb") # 写入mysql def deal_mysql(self): # 打开数据库连接 db = pymysql.connect("localhost", "root", "root", "test2") # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 for val in self.data_total: sql = "insert into data_total(name,job,company,phone_number,company_email,address,date_time)value ('%s','%s','%s','%s','%s','%s','%s')" % ( val[0], val[1], val[2], val[3], val[4], val[5], val[6]) try: # 执行sql语句 cursor.execute(sql) # 执行sql语句 db.commit() print("insert ok") except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 if __name__ == '__main__': data = Create_Data() data.deal_excel() data.deal_txt() data.deal_mongodb() data.deal_mysql()
生成100条数据写入txt
生成100条数据写入excel
生成100条数据写入mongodb数据库
生成100条数据写入mysql数据库
就这么简单的几十行代码,可以随机生成我们需要的测试数据。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
更多文章关注小编公众号:自动化测试 To share