Python構造數據的神器庫-Faker
開發或者測試過程中,我們常常需要構造數據進行功能驗證,但手動創建數據比較費時,並且數據不夠規范。而Python提供了一個超級好用的偽造數據的開源庫--Faker。
Faker是一個Python的第三方開源項目,可以為您生成虛假數據。無論您是需要引導數據庫,創建外觀漂亮的XML文檔,填寫持久性來對其進行壓力測試,還是匿名化從生產服務中獲取的數據,Faker都適合您。內置的方法可以快速創建絕大多數類型的數據,比如姓名、地址、電話、身份證、時間、網絡信息、文本信息等,並且結合python語法,可以向數據庫批量構造壓力測試數據。
github地址:https://github.com/joke2k/faker
官方文檔:https://faker.readthedocs.io/en/master/
安裝
pip install Faker
基本使用
from faker import Faker
#創建對象,默認生成的數據為為英文,使用zh_CN指定為中文
fake = Faker('zh_CN')
print(fake.name())#隨機生成姓名
print(fake.address())#隨機生成地址
print(fake.phone_number())#隨機生成電話號碼
print(fake.pystr())#隨機生成字符串
print(fake.email())#隨機生成郵箱地址
for i in range(10):
print(fake.name())#隨機生成10個姓名
常用方法
1、地理信息類
city_suffix():市,縣
country():國家
country_code():國家編碼
district():區
geo_coordinate():地理坐標
latitude():地理坐標(緯度)
longitude():地理坐標(經度)
postcode():郵編
province():省份
address():詳細地址
street_address():街道地址
street_name():街道名
street_suffix():街、路
2、基礎信息類
ssn():生成身份證號
bs():隨機公司服務名
company():隨機公司名(長)
company_prefix():隨機公司名(短)
company_suffix():公司性質,如‘信息有限公司’
fake.credit_card_expire(start='now', end='+10y', date_format='%m/%y'):隨機信用卡到期日如'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
3、郵箱信息類
ascii_company_email():隨機ASCII公司郵箱名
ascii_email():隨機ASCII郵箱:
company_email():
email():
safe_email():安全郵箱
4、網絡基礎信息類
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地址
5、瀏覽器信息類
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信息
6、數字信息
numerify():三位隨機數字
random_digit():0~9隨機數
random_digit_not_null():1~9的隨機數
random_int():隨機數字,默認0~9999,可以通過設置min,max來設置
random_number(digits=9, fix_len=True):隨機數字,如果digits 為None(默認),則其值將設置為1 到9 之間的隨機整數。如果 fix_len 為 False(默認),則可以生成所有不超過位數的整數。如果 fix_len 為 True,則只能生成具有確切位數的整數。
pyfloat():left_digits=5 #生成的整數位數, right_digits=2 #生成的小數位數, positive=True #是否只有正數
pyint():隨機Int數字(參考random_int()參數)
pydecimal():隨機Decimal數字(參考pyfloat參數)
7、文本加密類
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():隨機生成密碼,可選參數:length:密碼長度;special_chars:是否能使用特殊字符;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
sha1():隨機SHA1
sha256():隨機SHA256
uuid4():隨機UUID
8、時間信息類
date():隨機日期
date_between():隨機生成指定范圍內日期,參數:start_date,end_date
date_between_dates():隨機生成指定范圍內日期,用法同上
date_object():隨機生產從1970-1-1到指定日期的隨機日期。
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():隨機年份
自定義provider
from faker import Faker
fake = Faker()
from faker.providers import BaseProvider
# 創建自定義的類
class MyProvider(BaseProvider):
def fun1(self):
return 'xxxxxx'
# 調用 add_provider 方法添加一個provider
fake.add_provider(MyProvider)
>>>fake.fun1()
>>>'xxxxxx'
更多用法參考官方文檔:https://faker.readthedocs.io/en/master/