Python库Faker----生成随机测试数据
Python库:随机生成测试数据的模块
1.安装
pip install Faker
2.创建Faker
①
In[2]:from faker import Faker
...:fake = Faker()
...:# 随机生成一个名字
...:fake.name()
Out[2]: 'Timothy Haynes'
②
In[3]:from faker import Factory
...:fake = Factory.create()
...:fake.name()
Out[3]: 'Denise Jones'
3.生成本地化数据
# 源码
class Factory(object):
@classmethod
def create(
cls,
locale=None,
providers=None,
generator=None,
includes=None,
**config):
...
之前生成的都是英文数据,默认情况下locale = em_US,现将其改为“zh_CN”,生成中文数据
In[4]:fake = Faker("zh_CN")
...:fake.name()
Out[4]: '毛军'
4.方法
from faker import Faker
fake = Faker('zh_CN')
# 个人信息
>>> fake.name() # 姓名
'潘丽华'
>>> fake.simple_profile()
{'username': 'guiying17',
'name': '王凯',
'sex': 'M',
'address': '青海省晶县秀英南昌街g座 837876',
'mail': '[email protected]',
'birthdate': datetime.date(1933, 3, 22)}
# 地址信息
>>> fake.address()
'江苏省六盘水县友好蒋街y座 925418'
>>> fake.province()
'云南省'
>>> fake.city()
'红市'
# URL
>>> fake.url()
'http://www.55.cn/'
# 公司信息
>>> fake.company()
'兰金电子网络有限公司'
>>> fake.company_prefix()
'信诚致远'
>>> fake.company_suffix()
'传媒有限公司'
>>> fake.company_email()
'[email protected]'
# 文本类
>>> fake.text()
'可能搜索出来游戏只要.游戏加入是一图片如此企业提高.男人发展结果这么经验直接文件投资.\n介绍手机记者特别市场地址个人.以上部分有关也是朋友.一定市场到了.计划就是简介显示解决部门.\n最大基本注册.得到销售手机能够.可是来自公司的是在线客户目前.\n介绍作者大小全部音乐具有.类型企业积分回复.\n这种文件电脑出现.因此部分最新产品就是全国.'
>>> fake.word()
"我们"
>>> fake.words()
['开发', '文化', '阅读']
>>> fake.sentences()
['世界更新这种处理影响评论.', '同时问题设计.', '完全活动开始位置.']
5.自定义功能
from faker import Faker
fake = Faker()
# first, import a similar Provider or use the default one
from faker.providers import BaseProvider
# create new provider class. Note that the class name _must_ be ``Provider``.
class Provider(BaseProvider):
def foo(self):
return 'bar'
# then add new provider to faker instance
fake.add_provider(Provider)
# now you can use:
fake.foo()
# 'bar'
6.使用实例
现有一张SQL表,填写一百条测试数据。
# coding = utf-8
from faker import Faker
import pymysql
fake = Faker("zh-CN")
conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456", charset='utf8',db="test")
sql = "insert into personal_information(name,ID_Card,address,tel) VALUES (%s,%s,%s,%s)"
cursor = conn.cursor()
for i in range(100):
params = (fake.name(),fake.ssn(),str(fake.city()),fake.phone_number())
# sql = sql.format(fake.name(),fake.ssn(),str(fake.city()),fake.phone_number())
cursor.execute(sql,params)
conn.commit()
cursor.close()
conn.close()
结果图: