Faker是什么
在软件开发过程中,构造测试数据是必须的工作,可以通过SQL脚本等方式构造,但总体还是比较麻烦,花费较多的精力,利用Python生态的Faker包可以青松的构造各种文化下的随机信息(名字,地址,邮编,城市,省份等)
Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。
安装Faker
方法一:
pip install fakerD:\python\Anaconda3>pip install fakerCollecting faker Downloading https://files.pythonhosted.org/packages/79/36/8e1aa2f775018ea11a897bef32b6f80d78dcb6cc6563744f2e1dcf128b82/Faker-1.0.2-py2.py3-none-any.whl (845kB) 100% |████████████████████████████████| 849kB 125kB/sRequirement 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/sRequirement already satisfied: python-dateutil>=2.4 in d:\python\anaconda3\lib\site-packages (from faker) (2.6.1)Installing collected packages: text-unidecode, fakerSuccessfully 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>ipythonPython 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 informationIPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.In [1]: from faker import FakerIn [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]: 'minfeng@hotmail.com'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.6import sysimport faker# 设置中国地区偏好数据fake = faker.Faker(locale='zh-CN')target = open("person.csv", 'a')# 随机生成一万条数据写入到csvfor 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()