野生技术宅协会python小白学习笔记

用faker模拟数据

2018-11-18  本文已影响5人  乐百川

做开发的时候常常要模拟一些用户数据,自己编写随机数据虽然也可以,但是如果想要模拟比较复杂的数据,那自己做的话就有些麻烦。faker正是这样一个类库,让我们能非常简单的模拟数据。本文参考自官方文档,如果有兴趣可以查看官方文档,不过

安装faker

首先先来安装faker:

pip install Faker

简单使用

faker用起来也很简单,初始化一个实例,然后调用对应的方法就可以获得随机数据。

from faker import Faker
fake = Faker()

fake.name()
# 'Lucy Cechtelar'

fake.address()
# '426 Jordy Lodge
#  Cartwrightshire, SC 88120-6700'

默认语言是英文,如果要使用其他语言的随机数据,可以简单的向Faker构造函数传递一个代表区域类型的字符串:

fake = Faker('zh_CN')

官方文档列出了所有可用的区域类型以及对应语言的显示实例,常用的自然是en_USzh_CN

数据提供器(Providers)

默认的faker实例自带的方法并不多,只能模拟一些简单数据,但是faker还提供了一种扩展办法,就是添加数据提供器。提供器是一个继承自faker.providers.BaseProvider的类,如果需要自己编写一些新的随机数据生成方法,就可以用提供器。需要注意提供器的类名必须是Provider

from faker import Faker
import random
from faker.providers import BaseProvider


# 自定义Provider
class Provider(BaseProvider):
    def random_hello(self):
        return random.choice(['hello', 'hi'])


fake = Faker('zh_CN')
fake.add_provider(Provider)

print(fake.random_hello())
# hello或hi

当然除非特殊情况,其实没必要自己编写Provider,因为faker自带了一大堆Provider,基本上能满足99%的需求。官方文档列出了一些自带的Provider以及社区编写的第三方Provider,它们的功能如下:

最后来一点代码,模拟一些个人数据:

from faker import Faker
import random
from pprint import pprint

fake = Faker('zh_CN')

def generate_user():
    return dict(name=fake.name(),
                password=fake.password(length=10),
                company=fake.company(),
                job=fake.job(),
                birthday=fake.date_of_birth(minimum_age=0, maximum_age=120),
                telephone=fake.phone_number(),
                address=fake.address())


users = []
for _ in range(0, 2):
    users.append(generate_user())

pprint(users)

'''
[{'address': '江苏省潮州市黄浦长沙街j座 695574',
  'birthday': datetime.date(1951, 3, 4),
  'company': '兰金电子信息有限公司',
  'job': '软件测试',
  'name': '湛莹',
  'password': 'iUCBVtlj&4',
  'telephone': '13383280861'},
 {'address': '青海省玉市浔阳程街w座 965749',
  'birthday': datetime.date(1972, 1, 17),
  'company': '立信电子信息有限公司',
  'job': '网页设计/制作/美工',
  'name': '羊杨',
  'password': '#gyXVr_(S3',
  'telephone': '13699862129'}]
'''

如果要用到更多类型的数据,还是参考官方文档比较好,这里列出了faker包含的模拟数据方法和对应的显示,有需要的话可以看看。

上一篇 下一篇

猜你喜欢

热点阅读