2019独角兽企业重金招聘Python工程师标准>>>
Faker是什么
在软件开发过程中,构造测试数据是必须的工作,可以通过SQL脚本等方式构造,但总体还是比较麻烦,花费较多的精力,利用Python生态的Faker包可以青松的构造各种文化下的随机信息(名字,地址,邮编,城市,省份等)
Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。
安装Faker
方法一:
pip install faker
D:\python\Anaconda3>pip install faker
Collecting faker
Downloading https://files.pythonhosted.org/packages/79/36/8e1aa2f775018ea11a897bef32b6f80d78dcb6cc6563744f2e1dcf128b82/Faker-1.0.2-py2.py3-none-any.whl (845kB)
100% |████████████████████████████████| 849kB 125kB/s
Requirement already satisfied: six>=1.10 in d:\python\anaconda3\lib\site-packages (from faker) (1.10.0)
Collecting text-unidecode==1.2 (from faker)
Downloading https://files.pythonhosted.org/packages/79/42/d717cc2b4520fb09e45b344b1b0b4e81aa672001dd128c180fabc655c341/text_unidecode-1.2-py2.py3-none-any.whl (77kB)
100% |████████████████████████████████| 81kB 114kB/s
Requirement already satisfied: python-dateutil>=2.4 in d:\python\anaconda3\lib\site-packages (from faker) (2.6.1)
Installing collected packages: text-unidecode, faker
Successfully installed faker-1.0.2 text-unidecode-1.2
方法二:
pycharm settings -> Project Interpreter 面板中添加安装
方法三:
Anaconda navigator -> Environments 面板中添加安装
Faker的使用
引用包:
from faker import Faker
初始化:
f=Faker(locale='zh_CN') 关于初始化参数locale:为生成数据的文化选项,默认为en_US,只有使用了相关文化,才能生成相对应的随机信息
实例
D:\python\Anaconda3>ipython
Python 3.6.2 |Anaconda custom (64-bit)| (default, Jul 20 2017, 12:30:02) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from faker import Faker
In [2]: f = Faker(local = 'zh_CN')
In [3]: f.name()
Out[3]: 'Elizabeth Hood'
In [4]: f = Faker(locale = 'zh_CN')
In [5]: f.name()
Out[5]: '曹建平'
In [6]: f.city()
Out[6]: '武汉县'
In [8]: f.street_address() + f.street_name() + f.street_suffix()
Out[8]: '澳门路c座巢湖路路'
In [9]: f.country_code()
Out[9]: 'CV'
In [10]: f.longitude()
Out[10]: Decimal('-96.424063')
In [11]: f.latitude()
Out[11]: Decimal('-11.7112995')
In [12]: f.address()
Out[12]: '山东省呼和浩特县和平巢湖街S座 832641'
In [13]: f.province()
Out[13]: '西藏自治区'
In [14]: f.city_suffix()
Out[14]: '县'
In [15]: f.postcode()
Out[15]: '604297'
In [16]: f.license_plate()
Out[16]: 'AYF-2563'
In [17]: f.bank_country()
Out[17]: 'GB'
In [18]: f.iban()
Out[18]: 'GB84XRSF1580415636005'
In [19]: f.bban()
Out[19]: 'GLHH0499033551406'
In [20]: f.color_name()
Out[20]: 'MediumOrchid'
In [21]: f.rgb_css_color()
Out[21]: 'rgb(192,124,210)'
In [22]: f.catch_phrase()
Out[22]: 'Decentralized incremental intranet'
In [23]: f.company()
Out[23]: '艾提科信信息有限公司'
In [24]: f.credit_card_full(card_type=None)
Out[24]: 'VISA 16 digit\n成 吴\n4456197674098871 05/28\nCVC: 721\n'
In [25]: f.date_time()
Out[25]: datetime.datetime(2002, 8, 11, 7, 30, 3)
In [26]: f.iso8601()
Out[26]: '1983-09-02T06:46:48'
In [27]: f.job()
Out[27]: '驾校教练'
In [28]: f.file_name()
Out[28]: '网上.bmp'
In [29]: f.ipv4()
Out[29]: '198.53.37.137'
In [30]: f.uri_path()
Out[30]: 'blog'
In [31]: f.url()
Out[31]: 'https://mingyin.cn/'
In [33]: f.email()
Out[33]: '[email protected]'
In [34]: f.phone_number()
Out[34]: '13863565741'
In [35]: f.ssn()
Out[35]: '510411200011245335'
参考官方文档:https://faker.readthedocs.io/en/master/locales/zh_CN.html
构造测试数据存入CSV
# _*_ coding: utf-8 _*_
# python3.6
import sys
import faker
# 设置中国地区偏好数据
fake = faker.Faker(locale='zh-CN')
target = open("person.csv", 'a')
# 随机生成一万条数据写入到csv
for i in range(10000):
# 姓名,身份证,手机号码,工作岗位,电子邮箱,信用卡,公司名称
data = fake.name() + ',' + fake.ssn() + ',' + fake.phone_number() + ',' + fake.job() + ',' + fake.email() + ',' + fake.credit_card_number(
card_type=None) + ',' + fake.company()
# print(data)
target.writelines(str(data) + '\n')
target.close()