前面兩篇文章,一篇介紹了利用Python原生生成測試數據基於Python生成中文測試數據,一篇介紹了Faker庫生成測試數據基於Faker生成中文測試數據實例, 本文介紹基於Faker Providers生成測試數據的實例。
Providers介紹
每一個生成器屬性(例如name、address、lorem等等)都被稱為"fake",faker生成器有很多這樣的組件,它們都被打包在"Providers"中。
先看一個簡單的實例
# -*- coding: utf-8 -*-
__author__ = "苦葉子"
"""
faker providers基本實例
"""
from faker import Faker
# 從providers中導入internet組件
from faker.providers import internet
if __name__ == "__main__":
fake = Faker("zh_CN")
# 添加provider組件
fake.add_provider(internet)
# 生成一個私有的ip
ip = fake.ipv4_private()
print(ip)
運行結果如下
下圖為fake內置的providers組件,連結為:https://faker.readthedocs.io/en/stable/providers.html
下圖為第三方貢獻的開源的providers組件,連結為:https://faker.readthedocs.io/en/stable/communityproviders.html
下面看看如何創建一個自己的Provider,直接看代碼實例
# -*- coding: utf-8 -*-
__author__ = "苦葉子"
"""
實現一個簡單的faker provider
"""
from faker import Faker
# 導入provider基類,我們的provider需要繼承該類
from faker.providers import BaseProvider
# 創建一個我們的provider
class MyProvider(BaseProvider):
def my_name(self):
return "DeepTest"
if __name__ == "__main__":
print("使用自定義Provider實例")
fake = Faker('zh_CN')
# 將自定義provider添加至fake
fake.add_provider(MyProvider)
# 調用自定義provider中方法,生成數據
my_name = fake.my_name()
print(my_name)
運行結果
是不是很簡單?
我們可以根據實際業務需要,來自定義自己的provider,從而能滿足測試過程中特定數據的生成需要。