造数神器 python-faker
faker简介
项目测试时,为了测试常需要造假数据,经常要尽量的模拟真实环境,通常要费大量手工而且造出来的数据,而且通常手工造出来的看起来也很别扭,费时又费事,有没有更好的办法?有,Faker这个造数神器,可以满足你对模拟数据的所有需求。
Faker是一个神奇的python第三方库,可以帮助我们自动生成各种看似真实的假数据,例如:用户信息类、网络基础信息类、浏览器信息类、文件信息类、数字类、文本加密类、时间信息类、其他类别等。
可以在需要大量测试数据的场景下,通过脚本生成快速生成尽可能接近真实的测试数据,节约造数成本。
docs:https://faker.readthedocs.io/en/master/
github:https://github.com/joke2k/faker
安装与命令行使用
安装
-
版本:
python3.5+
-
pip
安装:$ pip3 install Faker
-
验证是否安装成功
$ faker --version faker 5.6.1
命令行使用
常用命令行参数
命令行参数 | 说明 |
---|---|
-h ,--help |
显示帮助信息 |
--version |
显示版本信息 |
-o [output] |
输出重定向到指定文件 |
-l [LOCALE] ,--lang [LOCALE] |
指定使用的语言包,不同的语言包随机生成的不一样 |
-r [REPEAT] ,--repeat [REPEAT] |
指定生成的数量 |
-s [SEP] ,--sep [SEP] |
在生成结果中插入指定的分隔符 |
-i [INCLUDE ...] ,--include [INCLUDE ...] |
指定自定义假数据生成器 (这里填你的假数据生成器的包路径,进行一个导包操作) |
常用命令
可以通过命令行调用faker,直接生成伪数据或者将伪数据写入到指定文件,等等。
-
指定语言包
# 指定语言包,简体中文,zh_CN,生成人物描述信息(profile) $ faker -l zh_CN profile { 'job': '保险业务经理/主管', 'company': '天益传媒有限公司', 'ssn': '220106196002131103', 'residence': '河南省广州县上街澳门街P座 643244', 'current_location': (Decimal('-66.54')), 'blood_group': 'AB-', 'website': ['http://www.er.cn/', 'https://www.xiulan.cn/', 'https://www.shen.cn/', 'https://ot.cn/'], 'username': 'vzhu', 'name': '王萍', 'sex''F', 'address': '山东省永安市黄浦齐齐哈尔路O座 451034', 'mail': 'majing@yahoo.com', 'birthdate': datetime.date(1967, 7, 15)} # 生成只有name,sex,birthdate,address的人物描述信息(profile) $ faker -l zh_CN profile name,sex,birthdate,address { 'name': '张岩', 'sex': 'F', 'address': '甘肃省武汉县龙潭江街e座 854752', 'birthdate': datetime.date(1939, 12, 6)} # 不指定地区,默认英文,en_US $ faker profile name,sex,birthdate,address { 'name': 'Scott Griffin', 'sex': 'M', 'address': '4788 Stanley Motorway\nBellside, NH 64281', 'birthdate': datetime.date(1988, 12, 12)}
-
指定数量的数据,指定生成结果的分隔符
# 生成五个手机号码,默认分隔符为换行符 $ faker -l zh_CN phone_number -r 5 13206790377 18066048764 15056230123 15566115750 15903470404 # 指定分割隔符,不指定则默认为换行符 $ faker -l zh_CN phone_number -r 5 -s ',' 18941094668, 15098259791, 14708023002, 13798344417, 15726018159,
-
生成数据输出到指定文件
$ faker -l zh_CN phone_number -r 100 -s '' -o /faker_demo/phone_number.xls
faker的python使用
经典例子
-
使用
faker.Faker()
创建和初始化一个faker
生成器,可通过访问你想要的数据类型来命名的属性生成的数据。from faker import Faker # 1.创建和初始化一个faker生成器,地区为中国 fake = Faker('zh_CN') # 生成name假数据 name = fake.name() print(f'Randomly generate fake name, 生成name假数据:{name}') # 生成地址假数据 address = fake.address() print(f'Randomly generate fake address, 生成地址假数据:{address}') # 生成一段废话 text = fake.text() print(f'Randomly generate rubbish, 生成一段废话:{text}')
-
输出
Randomly generate fake name:李红 Randomly generate fake address:湖北省刚县海陵兴城路E座 381931 Randomly generate rubbish:现在可以类型不断方法更多日本.一般你们发表简介. 次数行业建设对于我的.只是一定社会汽车.大小本站所有软件. 继续什么游戏用户.服务空间之后完成商品记者网上.环境全国而且汽车. 业务无法这里以上成功.评论位置电话可是学习必须自己但是.能够方法法律正在软件城市一定而且. 电子名称可是正在成为加入留言.次数怎么提高程序登录.
常见语言项
目前faker支持78种语言包,Faker可以将语言环境作为可选参数,以返回本地化的数据。
zh_CN - Chinese (China Mainland)
zh_TW - Chinese (China Taiwan)
en_US - English (United States)
fr_FR - French
ko_KR - Korean
ru_RU - Russian
ja_JP - Japanese
多语言环境
-
v3.0.0
版本后支持支持多种语言环境。locals = ['zh_CN', 'ja_JP', 'ko_KR', 'en_US'] fake = Faker(locals) for _ in range(10): print(fake.name())
</