Faker 都能造哪些數(shù)據(jù)
你好,我是 somenzz,可以叫我征哥。
我們在測試過程中,會使用一些測試數(shù)據(jù),測試數(shù)據(jù)有時候來自數(shù)據(jù)庫里的脫敏數(shù)據(jù),有時候需要自己造。自己造一些簡單的文本還好,一些復雜的,比如身份證號,信用卡號,街道地址可就麻煩了。
好在 Python 有個 faker (pip install faker)庫,可以幫我們造一些測試數(shù)據(jù):
>>>?from?faker?import?Faker
>>>?fake?=?Faker(locale='zh_CN')
>>>?fake.name()
'賀平'
>>>?fake.address()
'青海省秀蘭縣沙灣寧德路G座?507201'
>>>?fake.ssn()
'371203199110016966'
>>>?fake.company()
'巨奧科技有限公司'
>>>
今天就來盤點一下,這個 faker 庫可以造哪些數(shù)據(jù):
0、支持哪些國家的語言
ar_EG?-?Arabic?(Egypt)????????阿拉伯語?-?埃及
ar_PS?-?Arabic?(Palestine)????阿拉伯語?-?巴勒斯坦
ar_SA?-?Arabic?(Saudi?Arabia)????阿拉伯語?-?沙特阿拉伯
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?(Great?Britain)????英語?-?英國
en_US?-?English?(United?States)???英語?-??美國
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、基礎(chǔ)信息類
ssn():生成身份證號
bs():隨機公司服務名
company():隨機公司名(長)
company_prefix():隨機公司名(短)
company_suffix():公司性質(zhì)
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、網(wǎng)絡(luò)、郵箱相關(guān)
domain_name():生成域名
domain_word():域詞(即,不包含后綴)
ipv4():隨機IP4地址
ipv6():隨機IP6地址
mac_address():隨機MAC地址
tld():網(wǎng)址域名后綴(.com,.net.cn,等等,不包括.)
uri():隨機URI地址
uri_extension():網(wǎng)址文件后綴
uri_page():網(wǎng)址文件(不包含后綴)
uri_path():網(wǎng)址文件路徑(不包含文件名)
url():隨機URL地址
user_name():隨機用戶名
image_url():隨機URL地址
ascii_company_email():隨機ASCII公司郵箱名
ascii_email():隨機ASCII郵箱:
company_email():
email():
safe_email():安全郵箱
3、瀏覽器相關(guān)
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、數(shù)字、文本、加密相關(guān)
numerify():三位隨機數(shù)字
random_digit():0~9隨機數(shù)
random_digit_not_null():1~9的隨機數(shù)
random_int():隨機數(shù)字,默認0~9999,可以通過設(shè)置min,max來設(shè)置
random_number():隨機數(shù)字,參數(shù)digits設(shè)置生成的數(shù)字位數(shù)
pyfloat():
left_digits=5?#生成的整數(shù)位數(shù),?right_digits=2?#生成的小數(shù)位數(shù),?positive=True?#是否只有正數(shù)
pyint():隨機Int數(shù)字(參考random_int()參數(shù))
pydecimal():隨機Decimal數(shù)字(參考pyfloat參數(shù))
pystr():隨機字符串
random_element():隨機字母
random_letter():隨機字母
paragraph():隨機生成一個段落
paragraphs():隨機生成多個段落
sentence():隨機生成一句話
sentences():隨機生成多句話,與段落類似
text():隨機生成一篇文章
word():隨機生成詞語
words():隨機生成多個詞語,用法與段落,句子,類似
binary():隨機生成二進制編碼
boolean():True/False
language_code():隨機生成兩位語言編碼
locale():隨機生成語言/國際?信息
md5():隨機生成MD5
null_boolean():NULL/True/False
password():隨機生成密碼,可選參數(shù):length:密碼長度;special_chars:是否能使用特殊字符;digits:是否包含數(shù)字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
sha1():隨機SHA1
sha256():隨機SHA256
uuid4():隨機UUID
5、時間、日期類
date():隨機日期
date_between():隨機生成指定范圍內(nèi)日期,參數(shù):start_date,end_date
date_between_dates():隨機生成指定范圍內(nèi)日期,用法同上
date_object():隨機生產(chǎn)從1970-1-1到指定日期的隨機日期。
date_time():隨機生成指定時間(1970年1月1日至今)
date_time_ad():生成公元1年到現(xiàn)在的隨機時間
date_time_between():用法同dates
future_date():未來日期
future_datetime():未來時間
month():隨機月份
month_name():隨機月份(英文)
past_date():隨機生成已經(jīng)過去的日期
past_datetime():隨機生成已經(jīng)過去的時間
time():隨機24小時時間
timedelta():隨機獲取時間差
time_object():隨機24小時時間,time對象
time_series():隨機TimeSeries對象
timezone():隨機時區(qū)
unix_time():隨機Unix時間
year():隨機年份
6、地理信息
fake.city_suffix():市,縣
fake.country():國家
fake.country_code():國家編碼
fake.district():區(qū)
fake.geo_coordinate():地理坐標
fake.latitude():地理坐標(緯度)
fake.longitude():地理坐標(經(jīng)度)
fake.postcode():郵編
fake.province():省份
fake.address():詳細地址
fake.street_address():街道地址
fake.street_name():街道名
fake.street_suffix():街、路
7、其他一些組合數(shù)據(jù)
profile():隨機生成檔案信息
simple_profile():隨機生成簡單檔案信息
pyiterable()
pylist()
pyset()
pystruct()
pytuple()
pydict()
比如說 profile() 生成的檔案信息,可以用于用戶信息接口的調(diào)試。
>>>?from?faker?import?Faker
>>>?fake?=?Faker(locale='zh_CN')
>>>?fake.profile()
{'job':?'軟件工程師',?'company':?'四通網(wǎng)絡(luò)有限公司',?'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':?'[email protected]',?'birthdate':?date(1980,?10,?18)}
>>>
還可以生成 Python 相關(guān)的對象:
from?faker?import?Faker
fake?=?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結(jié)構(gòu):{}'.format(fake.pystruct(count=1)))??#?Python結(jié)構(gòu)
輸出信息
生成Python字典:?{'作者':?8955,?'之后':?'pDuOmPTKZxtqyLxACLtp',?'是一':?'jmMdjwfWPERLIKuPlDyU',?'以后':?Decimal('8836111404629.58'),?'大小':?'[email protected]',?'目前':?'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結(jié)構(gòu):(['xRUPMkjaKCdOudIAagOi'],?{'聯(lián)系':?'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 哪些數(shù)據(jù),目前 Faker 支持近 300 種數(shù)據(jù),此外還支持自己進行擴展。
8、自定義 Faker 數(shù)據(jù)類型
如果以上數(shù)據(jù)不方便測試,我們還可以自定義:
>>>?from?faker?import?Faker
>>>?from?faker.providers?import?BaseProvider
>>>
>>>?#?創(chuàng)建自定義?Provider
>>>?class?CustomProvider(BaseProvider):
...?????def?customize_type(self):
...?????????return?'這是我自定義的數(shù)據(jù)'
...
>>>?fake?=?Faker()
>>>?fake.add_provider(CustomProvider)
>>>
>>>?fake.customize_type
0x7fe1935fb5e0>>
>>>?fake.customize_type()
'這是我自定義的數(shù)據(jù)'
最后的話
本文梳理了 Faker 庫可以造的常見數(shù)據(jù),建議收藏,以后用的時候方便查找。好了,今天的分享就到這里,覺得有幫助,還請點贊、轉(zhuǎn)發(fā)、關(guān)注。
評論
圖片
表情
