在軟件需求、開發、測試過程當中,有時候須要使用一些測試數據,針對這種狀況,咱們通常要麼使用已有的系統數據,要麼須要手動製造一些數據。html
在手動製造數據的過程當中,可能須要花費大量精力和工做量,如今好了,有一個Python包可以協助你完成這方面的工做。linux
1.什麼是Fakergit
Faker是一個Python包,開源的GITHUB項目,主要用來建立僞數據,使用Faker包,無需再手動生成或者手寫隨機數來生成數據,只須要調用Faker提供的方法,便可完成數據的生成。github
項目地址:https://github.com/joke2k/fakerchrome
2.安裝Faker數組
方法一:瀏覽器
pip install faker安全
方法二:dom
經過上方提供的github地址,來下載編譯安裝。ide
3.Faker的使用
引用包:
from faker import Faker
初始化:
f=Faker(locale='zh_CN')
關於初始化參數locale:爲生成數據的文化選項,默認爲en_US,只有使用了相關文化,才能生成相對應的隨機信息(好比:名字,地址,郵編,城市,省份等)
可選擇的文化信息:
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
it_IT - Italian
ja_JP - Japanese
ko_KR - Korean
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)
而後便可使用系統提供的方法:
f.name() #生成姓名
f.address() #生成地址
4.經常使用方法一覽
city_suffix():市,縣
country():國家
country_code():國家編碼
district():區
geo_coordinate():地理座標
latitude():地理座標(緯度)
longitude():地理座標(經度)
lexify():替換全部問號(「?」)帶有隨機字母的事件。
numerify():三位隨機數字
postcode():郵編
province():省份
street_address():街道地址
street_name():街道名
street_suffix():街、路
random_digit():0~9隨機數
random_digit_not_null():1~9的隨機數
random_element():隨機字母
random_int():隨機數字,默認0~9999,能夠經過設置min,max來設置
random_letter():隨機字母
random_number():隨機數字,參數digits設置生成的數字位數
color_name():隨機顏色名
hex_color():隨機HEX顏色
rgb_color():隨機RGB顏色
safe_color_name():隨機安全色名
safe_hex_color():隨機安全HEX顏色
bs():隨機公司服務名
company():隨機公司名(長)
company_prefix():隨機公司名(短)
company_suffix():公司性質
credit_card_expire():隨機信用卡到期日
credit_card_full():生成完整信用卡信息
credit_card_number():信用卡號
credit_card_provider():信用卡類型
credit_card_security_code():信用卡安全碼
currency_code():貨幣編碼
am_pm():AM/PM
century():隨機世紀
date():隨機日期
date_between():隨機生成指定範圍內日期,參數:start_date,end_date取值:具體日期或者today,-30d,-30y相似
date_between_dates():隨機生成指定範圍內日期,用法同上
date_object():隨機生產從1970-1-1到指定日期的隨機日期。
date_this_month():
date_this_year():
date_time():隨機生成指定時間(1970年1月1日至今)
date_time_ad():生成公元1年到如今的隨機時間
date_time_between():用法同dates
future_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():隨機年份
file_extension():隨機文件擴展名
file_name():隨機文件名(包含擴展名,不包含路徑)
file_path():隨機文件路徑(包含文件名,擴展名)
mime_type():隨機mime Type
ascii_company_email():隨機ASCII公司郵箱名
ascii_email():隨機ASCII郵箱
ascii_free_email():
ascii_safe_email():
company_email():
domain_name():生成域名
domain_word():域詞(即,不包含後綴)
email():
free_email():
free_email_domain():
f.safe_email():安全郵箱
f.image_url():隨機URL地址
ipv4():隨機IP4地址
ipv6():隨機IP6地址
mac_address():隨機MAC地址
tld():網址域名後綴(.com,.net.cn,等等,不包括.)
uri():隨機URI地址
uri_extension():網址文件後綴
uri_page():網址文件(不包含後綴)
uri_path():網址文件路徑(不包含文件名)
url():隨機URL地址
user_name():隨機用戶名
isbn10():隨機ISBN(10位)
isbn13():隨機ISBN(13位)
job():隨機職位
paragraph():隨機生成一個段落
paragraphs():隨機生成多個段落,經過參數nb來控制段落數,返回數組
sentence():隨機生成一句話
sentences():隨機生成多句話,與段落相似
text():隨機生成一篇文章(不要幻想着人工智能了,至今沒徹底看懂一句話是什麼意思)
word():隨機生成詞語
words():隨機生成多個詞語,用法與段落,句子,相似
binary():隨機生成二進制編碼
boolean():True/False
language_code():隨機生成兩位語言編碼
locale():隨機生成語言/國際 信息
md5():隨機生成MD5
null_boolean():NULL/True/False
password():隨機生成密碼,可選參數:length:密碼長度;special_chars:是否能使用特殊字符;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
sha1():隨機SHA1
sha256():隨機SHA256
uuid4():隨機UUID
first_name():
first_name_female():女性名
first_name_male():男性名
first_romanized_name():羅馬名
last_name():
last_name_female():女姓
last_name_male():男姓
last_romanized_name():
name():隨機生成全名
name_female():男性全名
name_male():女性全名
romanized_name():羅馬名
msisdn():移動臺國際用戶識別碼,即移動用戶的ISDN號碼
phone_number():隨機生成手機號
phonenumber_prefix():隨機生成手機號段
profile():隨機生成檔案信息
simple_profile():隨機生成簡單檔案信息
隨機生成指定類型數據:
pybool():
pydecimal():
pydict():
pyfloat():left_digits=5 #生成的整數位數,
right_digits=2 #生成的小數位數,
positive=True #是否只有正數
pyint():
pyiterable()
pylist()
pyset()
pystr()
pystruct()
pytuple()
ssn():生成身份證號
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信息
5.使用中遇到的問題
元旦前發佈的這篇文章,因爲工做須要,元旦期間建立僞數據的過程當中,發現一個頗有意思的問題。不一樣的文化類之間,方法是偶然有區別的。
好比,在中文(zh_CN)中的方法,district()#獲取區 province()#獲取省的方法,在有些包裏是沒有的,這須要根據所使用文化類的國家特製來。
好比,中國的一級行政單位,是省,直轄市,自治區;而日本的一級行政單位,是都、道、府、縣。因此,日文包(ja_JP)中,就沒有相應的province(),district(),取而代之的是prefecture(),town();在美國,一級行政單位又是洲,因此,在美國英語包(en_US)中,取而代之的是state();
總之,在使用不一樣Fake類以前,最好對所生成文化的國家信息作初步的瞭解,建議先瀏覽其對應的類文件的成員。
小禮物