您的位置:首页 >聚焦 >

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():随机UUID

5、时间、日期类

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 库可以造的常见数据,建议收藏,以后用的时候方便查找。好了,今天的分享就到这里,觉得有帮助,还请点赞、转发、关注。

关键词: 地理坐标 测试数据 格鲁吉亚

相关阅读