Python 之 Faker 测试数据生成
这里的 Faker,当然不是打英雄联盟的 Faker。项目开发初期,为了测试方便,我们总要造不少以假乱真的假数据到系统中,尽量模拟真实环境。比如要创建一批用户名,创建一段文本,电话号码,街道地址、IP地址等。
用 Faker 就能满足常规数据造数的需求(每次调用时生成的数据不一样)。
安装
pip install Faker
语言支持
支持中文和英文。
参数 locale:为生成数据的文化选项),默认为 en_US,中文为 zh_CN。
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.name()) # 郭旭fake = Faker(locale='en_US')print(fake.name()) # Kathleen Camacho
基础信息生成
像姓名这些,和真实的姓名碰撞上的概率也是有的。
ssn():生成身份证号
bs():随机公司服务名
company():随机公司名(长)
company_prefix():随机公司名(短)
company_suffix():公司性质,如'信息有限公司'
credit_card_expire():随机信用卡到期日,如'03/30'
credit_card_full():生成完整信用卡信息
credit_card_number():信用卡号
credit_card_provider():信用卡类型
credit_card_security_code():信用卡安全码
job():随机职位
first_name_female():女性名
first_name_male():男性名
name():随机生成全名
name_female():男性全名
name_male():女性全名
phone_number():随机生成手机号
phonenumber_prefix():随机生成手机号段,如139
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.ssn()) # 222406194206104798print(fake.bs()) # generate user-centric synergiesprint(fake.company()) # 济南亿次元传媒有限公司print(fake.company_prefix()) # 方正科技print(fake.company_suffix()) # 信息有限公司print(fake.credit_card_expire()) # 06/32print(fake.credit_card_full())# Diners Club / Carte Blanche# 秀兰 孙# 38492902536056 03/28# CVC: 260print(fake.credit_card_number()) # 348548862953543print(fake.credit_card_provider()) # JCB 15 digitprint(fake.credit_card_security_code()) # 847print(fake.job()) # 体育运动教练print(fake.first_name_female()) # 秀梅print(fake.first_name_male()) # 波print(fake.name()) # 郭旭print(fake.name_female()) # 赵红霞print(fake.name_male()) # 郭建平print(fake.phone_number()) # 18899191626
邮箱信息生成
ascii_company_email():随机ASCII公司邮箱名
ascii_email():随机ASCII邮箱:
company_email():公司邮箱
email():普通邮箱
safe_email():安全邮箱
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.ascii_company_email()) # gang79@ea.cnprint(fake.ascii_email()) # fpeng@shen.cnprint(fake.company_email()) # nayin@90.netprint(fake.email()) # nhan@example.netprint(fake.safe_email()) # szhao@example.org
地理信息生成
city_suffix():市,县
country():国家
country_code():国家编码
district():区
latitude():地理坐标(纬度)
longitude():地理坐标(经度)
postcode():邮编
province():省份
address():详细地址
street_address():街道地址
street_name():街道名
street_suffix():街、路
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.city_suffix()) # 县print(fake.country()) # 圭亚那print(fake.country_code()) # GMprint(fake.district()) # 翔安print(fake.latitude()) # 34.470574print(fake.longitude()) # 131.570500print(fake.postcode()) # 774655print(fake.province()) # 甘肃省print(fake.address()) # 香港特别行政区邯郸县门头沟卢街F座 731059print(fake.street_address()) # 马街z座print(fake.street_name()) # 余街print(fake.street_suffix()) # 路
浏览器信息生成
chrome():随机生成Chrome的浏览器user_agent信息
firefox():随机生成FireFox的浏览器user_agent信息
internet_explorer():随机生成IE的浏览器user_agent信息
opera():随机生成Opera的浏览器user_agent信息
safari():随机生成Safari的浏览器user_agent信息
linux_platform_token():随机Linux信息
user_agent():随机user_agent信息
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.chrome())# Mozilla/5.0 (X11; Linux i686) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/19.0.800.0 Safari/533.2print(fake.firefox())# Mozilla/5.0 (X11; Linux i686; rv:1.9.5.20) Gecko/6818-09-18 15:13:10 Firefox/3.6.5print(fake.internet_explorer())# Mozilla/5.0 (compatible; MSIE 9.0; Windows 98; Win 9x 4.90; Trident/5.1)print(fake.opera())# Opera/9.25.(Windows 95; az-IN) Presto/2.9.170 Version/12.00print(fake.safari())# Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3 like Mac OS X; hr-HR) AppleWebKit/535.22.5 (KHTML, like Gecko) Version/4.0.5 Mobile/8B115 Safari/6535.22.5print(fake.linux_platform_token())# X11; Linux x86_64print(fake.user_agent())# Mozilla/5.0 (Linux; Android 4.0.4) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/42.0.898.0 Safari/533.2
数值信息生成
numerify():三位随机数字
random_digit():0~9随机数
random_digit_not_null():1~9的随机数
random_int():随机数字,默认0~9999,可以通过设置min,max来设置
random_number():随机数字,参数digits设置生成的数字位数
pyfloat():随机Float数字
pyint():随机Int数字(参考random_int()参数)
pydecimal():随机Decimal数字(参考pyfloat参数)
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.numerify()) # 015print(fake.random_digit()) # 7print(fake.random_digit_not_null()) # 5print(fake.random_int()) # 7655print(fake.random_number()) # 167175852print(fake.pyfloat()) # 6201644344.38614print(fake.pyint()) # 503print(fake.pydecimal()) # -51414082580651.99033910289219645775491891816668078567248356218970315
文本加密信息生成
pystr():随机字符串
random_element():随机字母
random_letter():随机字母
paragraph():随机生成一个段落
paragraphs():随机生成多个段落
sentence():随机生成一句话
sentences():随机生成多句话,与段落类似
text():随机生成一篇文章
word():随机生成词语
words():随机生成多个词语,用法与段落,句子,类似
binary():随机生成二进制编码
boolean():True/False
language_code():随机生成两位语言编码
language_name():随机生成国家英文名称
locale():随机生成语言/国际 信息
md5():随机生成MD5
null_boolean():NULL/True/False
password():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母
sha1():随机SHA1
sha256():随机SHA256
uuid4():随机UUID
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.pystr()) # FkEavLcuhbwDJeSqnoSUprint(fake.random_element()) # aprint(fake.random_letter()) # pprint(fake.paragraph()) # 出现质量希望.只要男人需要的是.print(fake.paragraphs()) # ['东西进入技术汽车自己参加其他.投资根据就是经营介绍环境.是一正在主题.', '市场教育进行国内论坛参加时候还有.', '部门最大服务注意.选择喜欢继续是否电影汽车资源同时.']print(fake.sentence()) # 资料中国方式会员这样是否自己.print(fake.sentences()) # ['资料帮助音乐国家任何.', '其他要求那么用户.', '作为由于人民今年点击阅读国际.']print(fake.text())# 首页出现还是销售他的这样.能够开发电话类别应该也是电子科技.城市提供计划方面设备.# 那些提高详细注意.是一是否责任她的留言地方事情服务.成功部门发生加入有些业务.# 这种广告学校研究谢谢组织文章.学校更新时候感觉系列国内分析.成为电脑国际这样然后.# 日期活动简介然后首页然后.这是资源用户程序今天积分详细.# 问题结果以及经济非常.电话中国方式如何客户自己.说明他们学生建设质量产品.print(fake.word()) # 语言print(fake.words()) # ['设备', '汽车', '成功']# print(fake.binary()) # ...print(fake.boolean()) # Falseprint(fake.language_name()) # Frenchprint(fake.language_code()) # bnprint(fake.locale()) # kk_KZprint(fake.md5()) # d212618006988d078b5f0a5637082519print(fake.null_boolean()) # Noneprint(fake.password()) # *5CVv*JfJCprint(fake.sha1()) # d25c3b41b2ebe042e5f120b76bfdfb50b6e2e53eprint(fake.sha256()) # a6c23d0695c4358d2683552bf02b57b13b8f269b1e26b81c0677ede251bcf994print(fake.uuid4()) # c8c9b40c-176f-4420-a11e-1c425f7eb7c8
网络基础信息生成
domain_name():生成域名
domain_word():域词(即,不包含后缀)
ipv4():随机IP4地址
ipv6():随机IP6地址
mac_address():随机MAC地址
tld():网址域名后缀(.com,.net.cn,等等,不包括.)
uri():随机URI地址
uri_extension():网址文件后缀
uri_page():网址文件(不包含后缀)
uri_path():网址文件路径(不包含文件名)
url():随机URL地址
user_name():随机用户名
image_url():随机URL地址
file_path():随机文件路径
from faker import Fakerif __name__ == '__main__':fake = Faker(locale='zh_CN')print(fake.domain_name()) # jiewang.cnprint(fake.domain_word()) # gangprint(fake.ipv4()) # 72.178.192.49print(fake.ipv6()) # cab3:17a3:e2e7:2772:7e82:bd89:b4aa:8b4bprint(fake.mac_address()) # 72:99:a7:0c:29:f8print(fake.tld()) # netprint(fake.uri()) # http://www.pingjing.cn/category/categoriesauthor.htmprint(fake.uri_extension()) # .aspprint(fake.uri_page()) # homeprint(fake.uri_path()) # search/appprint(fake.url()) # https://shaofeng.cn/print(fake.user_name()) # xguprint(fake.image_url()) # https://picsum.photos/781/912print(fake.file_path()) # /点击/联系.webm