在軟件研發、測試中我們經常會需要造一些假數據,比如常用的身份證號、隨機數或者字符串等,這一類測試數據在軟件研發流程中還占了非常大的比重,這時候我們就需要手動創造一批看起來像真的的數據信息。
在python庫中我們可以使用random庫創建一批假數據應用於實際工作,但是遇到有些數據類似身份證號或者uuid則需要特定的方法生成,操作起來比較繁瑣。
這個時候如果有一個庫可以統一提供我們所需要的各種假數據信息,而不用我們單獨費勁心力去生成各種隨機數據就顯得特別重要!而Faker庫正好可以實現以上我們的各種需求。
Faker安裝
pip安裝
在python3.8中可以使用一下命令進行安裝
pip install Faker
robotframework中安裝
pip install robotframework-faker
Faker使用
python中使用
from faker import Faker
# 使用中文
fake = Faker(locale='zh_CN')
# 生成隨機兩位隨機數字
contract_num = fake.random_number(digits=2, fix_len=True)
# 生成三位正的隨機浮點數(兩位小數)
apply_amount_temp = fake.pyfloat(left_digits=3, right_digits=2, positive=True)
apply_amount = str(apply_amount_temp)
print(contract_amount)
# 生成隨機中文字符串
contract_remarks = fake.sentences()
# 生成隨機公司名稱
contract_company = fake.company()
其中要留意,如果不設置locale,則默認使用英文;
RF中使用
隨機身份證號-國外
[Documentation] 說明
... 1、沒有參數zh-CN,生成國外證件id
${test2} ssn
[Return] ${id_card}
設置兩位隨機小數
${test001} pyfloat left_digits=2 right_digits=2 positive=True
log 將float轉換為str格式
${amount} Convert To String ${test001}
[Return] ${amount}
設置三位隨機小數
${test001} pyfloat left_digits=3 right_digits=2 positive=True
log 將float轉換為str格式
${amount} Convert To String ${test001}
[Return] ${amount}
如圖所示:隨機身份證號
隨機兩位小數:
Faker常用的各種庫介紹:
地理信息類
address():詳細地址,中文環境中使用的是各種地址拼接,具體省份和區縣沒有聯動關系
city():城市
country():國家信息
country_code(representation='alpha-2'):國家編碼
postcode():郵編信息
street_address():街道地址信息
street_name():街道名稱
street_suffix():街、路
個人基本信息類
first_name():名
first_name_female():女性名
first_name_male():男性名
last_name():
name():隨機姓名全名
name_female():女性名字
name_male():男性名字
prefix():名字稱呼,如先生
prefix_female():女性稱呼
prefix_male():男性稱呼
phone_number():隨機手機號碼
profile(fields=None, sex=None):個人配置信息,如工作、公司、身份證號等
ssn():隨機身份證號
bs():隨機公司服務名
company():公司全稱
company_suffix():公司性質
job():工作隨機職位信息
credit_card_expire(start='now', end='+10y', date_format='%m/%y'):銀行卡到期日期
credit_card_full(card_type=None):銀行卡全稱信息
credit_card_number(card_type=None):銀行卡號
credit_card_provider(card_type=None):信用卡類型
credit_card_security_code(card_type=None):銀行卡安全碼
網絡信息類
ascii_company_email():隨機ASCII公司郵箱名稱
ascii_email():隨機ASCII郵箱
ascii_free_email():免費郵箱
ascii_safe_email():安全郵箱
company_email():公司郵箱
dga(year=None, month=None, day=None, tld=None, length=None):域名
domain_name(levels=1):
email(domain=None):郵箱信息
free_email():
free_email_domain():郵箱域名
hostname(levels=1):主機名
http_method():http的請求方法
image_url(width=None, height=None):圖片url地址
ipv4(network=False, address_class=None, private=None):ip地址信息
ipv4_network_class():ip地址分類
ipv4_private(network=False, address_class=None):私有ip地址
ipv4_public(network=False, address_class=None):公網ip地址
ipv6(network=False):ipv6地址信息
mac_address():pc的mac地址
port_number(is_system=False, is_user=False, is_dynamic=False):端口號
safe_domain_name():安全域名信息
safe_email():
uri():隨機uri地址
uri_extension():網頁文件后綴
uri_page():網頁文件信息
uri_path(deep=None):網址文件路徑
url(schemes=None):隨機url地址
user_name():隨機用戶名
文件信息類
file_extension(category=None):文件類型
file_name(category=None, extension=None):隨機文件名字
file_path(depth=1, category=None, extension=None):隨機文件路徑
unix_partition(prefix=None):unix分區信息
數字類
pybool():布爾型
pydecimal(left_digits=None, right_digits=None, positive=False, min_value=None, max_value=None):隨機Decimal類型數字
pydict(nb_elements=10, variable_nb_elements=True, value_types=None, *allowed_types):隨機字典類型數字
pyfloat(left_digits=None, right_digits=None, positive=False, min_value=None, max_value=None):隨機浮點類型數字
pyint(min_value=0, max_value=9999, step=1):隨機int類型數字
pystr(min_chars=None, max_chars=20):隨機字符串
pystr_format(string_format='?#-###{{random_int}}{{random_letter}}', letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'):隨機規定格式的字符串
random_digit():隨機數字
random_digit_not_null():1~9隨機數字
random_int(min=0, max=9999, step=1):0~999的隨機數字
random_number(digits=None, fix_len=False):
random_uppercase_letter():隨機大寫字母
個人代理類
android_platform_token():android版本user_agent信息
chrome(version_from=13, version_to=63, build_from=800, build_to=899):谷歌版本user_agent信息
firefox():火狐版本user_agent信息
internet_explorer():ie版本user_agent信息
ios_platform_token():ios版本信息
linux_platform_token():linux版本信息
linux_processor():linux版本類型
user_agent():隨機user_agent信息
隨機字符串
paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None):隨機生成段落
paragraphs(nb=3, ext_word_list=None):隨機生成多個段落
sentence(nb_words=6, variable_nb_words=True, ext_word_list=None):隨機生成一句話
sentences(nb=3, ext_word_list=None)::隨機生成多句話
text(max_nb_chars=200, ext_word_list=None):隨機生成一篇文章
texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)
word(ext_word_list=None):隨機生成詞語
words(nb=3, ext_word_list=None, unique=False):隨機生成多個詞語
password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True):隨機密碼
sha1(raw_output=False):隨機sha1密碼
日期時間
am_pm():上/下午
century():世紀
date(pattern='%Y-%m-%d', end_datetime=None):日期
date_between(start_date='-30y', end_date='today'):日期范圍
date_between_dates(date_start=None, date_end=None):
date_object(end_datetime=None):隨機生成1970-1-1到指定日期的隨機日期
date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115):生日
date_this_century(before_today=True, after_today=False):
date_time(tzinfo=None, end_datetime=None):時間信息
future_date(end_date='+30d', tzinfo=None):未來的日期
month():月份
month_name():月份名稱
past_date(start_date='-30d', tzinfo=None):隨機生成已經過去的日期
past_datetime(start_date='-30d', tzinfo=None):隨機生成已經過去的時間信息
time(pattern='%H:%M:%S', end_datetime=None):時間信息
time_delta(end_datetime=None):時間差
year():年份
Faker庫推薦
手冊:
https://faker.readthedocs.io/en/master/index.html
rf -faker手冊