Faker原意為騙子,此處表示一種能夠構(gòu)造仿造數(shù)據(jù)的模塊。
1. 安裝
pip install Faker --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
2. 導(dǎo)入
from faker import Faker
3. 核心功能
3.1 生成姓名
from faker import Faker
faker = Faker()
en_name = faker.name()
print(en_name)
# locale可以配置本地化,默認(rèn)為
faker = Faker(locale='zh_CN')
cn_name = faker.name()
print(cn_name)
其結(jié)果為:
Ashley Smith
徐秀云
看源代碼能知道其locale值可以接收str,可迭代的類型如list/set/tuple, 以及特殊的排序字典OrderDict,其默認(rèn)值為'en_US',此外其本地化的分隔符使用'-' / '_' 均可以

image.png

image.png
3.2 生成詳細(xì)的地址
def faker_address():
faker = Faker()
en_address = faker.address()
print(en_address)
print()
faker = Faker(locale='zh_CN')
cn_address = faker.address()
print(cn_address)
運(yùn)行結(jié)果
522 Anthony Glens
West Donaldtown, VT 59398
澳門特別行政區(qū)潮州市花溪重慶路h座 406479
- 此時(shí),大家可以嘗試一下通過pycharm點(diǎn)擊address方法,會(huì)發(fā)現(xiàn)無法進(jìn)入對(duì)應(yīng)的方法。但為什么能獲取的值呢。讓我們一個(gè)Debug看一下

image.png
- 上圖可以發(fā)現(xiàn)其調(diào)用對(duì)應(yīng)的屬性時(shí),實(shí)際是去調(diào)用了getattribute方法,
getattribute是屬性訪問攔截器,就是當(dāng)這個(gè)類的屬性被實(shí)例訪問時(shí),會(huì)自動(dòng)調(diào)用類的getattribute方法
- 繼續(xù)調(diào)用會(huì)發(fā)現(xiàn),其調(diào)用getattr方法,并通過attr參數(shù)返回對(duì)應(yīng)的工廠中的隨機(jī)值

image.png
Tips: 無論屬性是否存在,都會(huì)先調(diào)用getattribute 方法;在調(diào)用getattribute 方法獲取不到屬性時(shí),才會(huì)去調(diào)用getattr方法
-
切回去看factories如何生成的,其調(diào)用Factory的類方法實(shí)現(xiàn)provider收集
image.png
image.png
既默認(rèn)情況下回收集如下的provider

image.png
4. 除此之外,其還對(duì)pytest做了支持,方便在測(cè)試中更方便的引用

image.png

