在測試過程中,大家應該都遇到過各種各樣的數據構造問題。e.g. 構造一批通訊錄、構造一批用戶三要素(姓名手機號身份證)、構造一批銀行卡數據……
這時候,測試數據大多數可能是這樣的:
張三, 130 0000 0001
李四, 130 0000 0002
王五, 130 0000 0003
……
或者就一頓亂敲,造出來一批。
你是不是這樣做的呢?坦白的說,之前的小編就是醬紫。
這樣的測試數據,不僅要自己手動敲,還假的不能再假,浪費時間、浪費人力、數據價值低……后來想了個辦法,同步線上數據,但是還要加密解密,也要挨個庫表去找自己想要的數據。?
直到有一天,小編遇到了Faker,可以生成一批各種各樣的看起來“像真的一樣”的假數據。
如果你想學習自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網第一的自動化測試教程,同時在線人數到達1000人,并且還有筆記可以領取及各路大神技術交流:798478386???
【已更新】B站講的最詳細的Python接口自動化測試實戰教程全集(實戰最新版)_嗶哩嗶哩_bilibili
Fake哪些數據?
目前Faker庫中提供了三大類可以“構造”出的數據,官方劃分為: Standard Providers、Community Providers、Localized Providers。
Standard Providers
包含了通用信用卡、顏色、職業、日期時間等數據的生成方法。
Community Providers
由一些Community提供的,目前包括Web相關、云相關、WiFi、微服務、信用分數據。
Community Providers
根據地區/語言差異,本地化提供的一些方法,如簡體中文下生成的姓名和繁體中文下生成的姓名是不一樣的。
fake幾條通訊錄
for _ in range(3):print('姓名:', fake.name(), ' 手機號:', fake.phone_number())#fake 是由Faker創建的對象,且指定了中文
?姓名:王霞? 手機號:15744918509
姓名:李旭? 手機號:18025187089
姓名:郭娟? 手機號:13196551713
fake一組信用卡數據
print('Card Number:', fake.credit_card_number(card_type=None))
print('Card Provider', fake.credit_card_provider(card_type=None))
print('Card Security Code', fake.credit_card_security_code(card_type=None))
print('Card Expire', fake.credit_card_expire())
#fake 是由Faker創建的對象
Card Number:? 2720041566219373
Card Provider:? Mastercard
Card Security Code:? 215
Card Expire:? 07/20
可以用dir(fake),看Faker庫都可以fake哪些數據,目前Faker支持近300種數據,此外還支持自己進行擴展。
怎樣fake數據
前面介紹了Faker可以fake的數據,下面小編帶大家實際操作一遍。
第一步、安裝Faker庫
pip install Faker
第二步、用安裝好的Faker庫創建一個Faker對象
from faker import Faker
fake = Faker()
第三步、指定語言
fake = Faker("zh_CN")
第四步、fake數據
之后用fake對象就可以調用不同的方法生成各種數據了。
擴展Faker
如果這些數據還不夠生成數據使用,Faker還支持創建自定義的Provider生成數據。
from faker import Faker
from faker.providers import BaseProvider# 創建自定義Provider
class CustomProvider(BaseProvider):def customize_ua(self):return 'test_Faker_customize_ua'# 添加Provider
fake = Faker()
fake.add_provider(CustomProvider)
print(fake.customize_ua())
test_Faker_customize_ua
是不是十分簡單,方便擴展呢。以后常用的數據就可以自己創建Provider用自動化的方法生成了,不僅節省了時間,復用性也變高了。
寫在最后
閱讀Faker的源碼可以很容易發現,Faker實際是維護了一個“數據庫”,這個“數據庫”強大在做了很多Localized的處理和兼容。此外,作為一個開源的庫,Faker的源碼是非常值得研究的,也是Python新手可以用來練開源項目的利器。
當然,缺點也就顯而易見,它不是那么的智能,生成的數據是隨機生成,數據量也不是那么大。
【GitHub】https://github.com/joke2k/faker
【Docs】https://faker.readthedocs.io/en/master/