前面两篇文章,一篇介绍了利用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,从而能满足测试过程中特定数据的生成需要。