Faker 都能造哪些数据
2022-04-13 10:10:36 来源:程序员客栈
你好,我是 somenzz,可以叫我征哥。
我们在测试过程中,会使用一些测试数据,测试数据有时候来自数据库里的脱敏数据,有时候需要自己造。自己造一些简单的文本还好,一些复杂的,比如身份证号,信用卡号,街道地址可就麻烦了。
好在 Python 有个 faker (pip install faker)库,可以帮我们造一些测试数据:
>>>fromfakerimportFaker>>>fake=Faker(locale="zh_CN")>>>fake.name()"贺平">>>fake.address()"青海省秀兰县沙湾宁德路G座507201">>>fake.ssn()"371203199110016966">>>fake.company()"巨奥科技有限公司">>>
今天就来盘点一下,这个 faker 库可以造哪些数据:
0、支持哪些国家的语言ar_EG-Arabic(Egypt)阿拉伯语-埃及ar_PS-Arabic(Palestine)阿拉伯语-巴勒斯坦ar_SA-Arabic(SaudiArabia)阿拉伯语-沙特阿拉伯bg_BG-Bulgarian保加利亚语-保加利亚cs_CZ-Czech捷克语-捷克de_DE-German德语-德国dk_DK-Danish丹麦语-丹麦el_GR-Greek希腊语-希腊en_AU-English(Australia)英语-澳大利亚en_CA-English(Canada)英语-加拿大en_GB-English(GreatBritain)英语-英国en_US-English(UnitedStates)英语-美国es_ES-Spanish(Spain)西班牙语-西班牙es_MX-Spanish(Mexico)西班牙语-墨西哥et_EE-Estonian爱沙尼亚语-爱沙尼亚fa_IR-Persian(Iran)波斯语-伊朗fi_FI-Finnish芬兰语-芬兰fr_FR-French法语-法国hi_IN-Hindi印地语-印度hr_HR-Croatian克罗地亚语-克罗地亚hu_HU-Hungarian匈牙利语-匈牙利hy_AM-Armenian亚美尼亚语-亚美尼亚it_IT-Italian意大利语-意大利ja_JP-Japanese日语-日本ko_KR-Korean朝鲜语-韩国ka_GE-Georgian(Georgia)格鲁吉亚语-格鲁吉亚lt_LT-Lithuanian立陶宛语-立陶宛lv_LV-Latvian拉脱维亚语-拉脱维亚ne_NP-Nepali尼泊尔语-尼泊尔nl_NL-Dutch(Netherlands)德语-荷兰no_NO-Norwegian挪威语-挪威pl_PL-Polish波兰语-波兰pt_BR-Portuguese(Brazil)葡萄牙语-巴西pt_PT-Portuguese(Portugal)葡萄牙语-葡萄牙ru_RU-Russian俄语-俄国sl_SI-Slovene斯诺文尼亚语-斯诺文尼亚sv_SE-Swedish瑞典语-瑞典tr_TR-Turkish土耳其语-土耳其uk_UA-Ukrainian乌克兰语-乌克兰zh_CN-Chinese(China)(简体中文)zh_TW-Chinese(Taiwan)(繁体中文)1、基础信息类
ssn():生成身份证号bs():随机公司服务名company():随机公司名(长)company_prefix():随机公司名(短)company_suffix():公司性质credit_card_expire():随机信用卡到期日credit_card_full():生成完整信用卡信息credit_card_number():信用卡号credit_card_provider():信用卡类型credit_card_security_code():信用卡安全码job():随机职位first_name_female():女性名first_name_male():男性名last_name_female():女姓last_name_male():男姓name():随机生成全名name_female():男性全名name_male():女性全名phone_number():随机生成手机号phonenumber_prefix():随机生成手机号段2、网络、邮箱相关
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地址ascii_company_email():随机ASCII公司邮箱名ascii_email():随机ASCII邮箱:company_email():email():safe_email():安全邮箱3、浏览器相关
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信息4、数字、文本、加密相关
numerify():三位随机数字random_digit():0~9随机数random_digit_not_null():1~9的随机数random_int():随机数字,默认0~9999,可以通过设置min,max来设置random_number():随机数字,参数digits设置生成的数字位数pyfloat():left_digits=5#生成的整数位数,right_digits=2#生成的小数位数,positive=True#是否只有正数pyint():随机Int数字(参考random_int()参数)pydecimal():随机Decimal数字(参考pyfloat参数)pystr():随机字符串random_element():随机字母random_letter():随机字母paragraph():随机生成一个段落paragraphs():随机生成多个段落sentence():随机生成一句话sentences():随机生成多句话,与段落类似text():随机生成一篇文章word():随机生成词语words():随机生成多个词语,用法与段落,句子,类似binary():随机生成二进制编码boolean():True/Falselanguage_code():随机生成两位语言编码locale():随机生成语言/国际信息md5():随机生成MD5null_boolean():NULL/True/Falsepassword():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母sha1():随机SHA1sha256():随机SHA256uuid4():随机UUID5、时间、日期类
date():随机日期date_between():随机生成指定范围内日期,参数:start_date,end_datedate_between_dates():随机生成指定范围内日期,用法同上date_object():随机生产从1970-1-1到指定日期的随机日期。date_time():随机生成指定时间(1970年1月1日至今)date_time_ad():生成公元1年到现在的随机时间date_time_between():用法同datesfuture_date():未来日期future_datetime():未来时间month():随机月份month_name():随机月份(英文)past_date():随机生成已经过去的日期past_datetime():随机生成已经过去的时间time():随机24小时时间timedelta():随机获取时间差time_object():随机24小时时间,time对象time_series():随机TimeSeries对象timezone():随机时区unix_time():随机Unix时间year():随机年份6、地理信息
fake.city_suffix():市,县fake.country():国家fake.country_code():国家编码fake.district():区fake.geo_coordinate():地理坐标fake.latitude():地理坐标(纬度)fake.longitude():地理坐标(经度)fake.postcode():邮编fake.province():省份fake.address():详细地址fake.street_address():街道地址fake.street_name():街道名fake.street_suffix():街、路7、其他一些组合数据
profile():随机生成档案信息simple_profile():随机生成简单档案信息pyiterable()pylist()pyset()pystruct()pytuple()pydict()
比如说 profile() 生成的档案信息,可以用于用户信息接口的调试。
>>>fromfakerimportFaker>>>fake=Faker(locale="zh_CN")>>>fake.profile(){"job":"软件工程师","company":"四通网络有限公司","ssn":"530923198408240969","residence":"四川省淑华市蓟州通辽路e座 413191","current_location":(Decimal("-13.0327845"),Decimal("57.720440")),"blood_group":"AB+","website":["http://jing.com/","https://xiuyingtang.net/","http://www.fangchao.cn/","https://xiuyingyang.cn/"],"username":"csun","name":"袁琴","sex":"F","address":"河北省武汉县璧山西安街t座698036","mail":"jli@gmail.com","birthdate":date(1980,10,18)}>>>
还可以生成 Python 相关的对象:
fromfakerimportFakerfake=Faker(locale="zh_CN")print("生成Python字典:{}".format(fake.pydict(nb_elements=10,variable_nb_elements=True)))#Python字典print("生成Python可迭代对象:{}.".format(fake.pyiterable(nb_elements=10,variable_nb_elements=True)))#Python可迭代对象print("生成Python结构:{}".format(fake.pystruct(count=1)))#Python结构
输出信息
生成Python字典:{"作者":8955,"之后":"pDuOmPTKZxtqyLxACLtp","是一":"jmMdjwfWPERLIKuPlDyU","以后":Decimal("8836111404629.58"),"大小":"yanqiu@taokang.net","目前":"https://qiang.cn/privacy/","虽然":18168987.5715}生成Python可迭代对象:[9754,"IaULZqbQggrGMstzOnlP","pJTARLmleQIeuOBTFUaL",9159,"kZqbMcPEpzRJMluKxJqT","MQIJDTOVvdzntgqswzhs",-6756.3,Decimal("137479403784.9"),"https://06.cn/faq.htm",Decimal("-250.54314"),Decimal("-58189569317050.8"),datetime(1974,10,13,15,57,52),datetime(2003,4,11,6,3,6)].生成Python结构:(["xRUPMkjaKCdOudIAagOi"],{"联系":"GgqCNRIqnftahozxLoLn"},{"今天":{0:Decimal("1062112341879.0"),1:["VujNTFJgcszUwNhMDOBt",Decimal("-25806285371463.0"),9444727347789.0],2:{0:56297119409.0,1:267856.25,2:["RouhuObYaDdHIXkWQjqI",45685678.720959]}}})
当然了,还有不少没有列举完,可以在 Python 解释器中输入 dir(fake),看 Faker 库都可以 fake 哪些数据,目前 Faker 支持近 300 种数据,此外还支持自己进行扩展。
8、自定义 Faker 数据类型如果以上数据不方便测试,我们还可以自定义:
>>>fromfakerimportFaker>>>fromfaker.providersimportBaseProvider>>>>>>#创建自定义Provider>>>classCustomProvider(BaseProvider):...defcustomize_type(self):...return"这是我自定义的数据"...>>>fake=Faker()>>>fake.add_provider(CustomProvider)>>>>>>fake.customize_type最后的话>>>>fake.customize_type()"这是我自定义的数据"
本文梳理了 Faker 库可以造的常见数据,建议收藏,以后用的时候方便查找。好了,今天的分享就到这里,觉得有帮助,还请点赞、转发、关注。
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...