Python有用库-Faker

1,097 阅读3分钟

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

前言

用Python中Faker这个库来生成更多的数据,不要每次想测试接口的时候只能用自己写好的一组数据来进行测试啦。

地址:

faker.readthedocs.io/en/master/i…

安装:

pip install Faker

使用中文

对中文的支持比较一般 能用的只有名字,地址,手机号码

from faker import Faker
fake = Faker('zh_CN')
for _ in range(10):
    print(fake.name())
    print(fake.address())
    print(fake.phone_number())

像是车牌什么的生成的都是外国版车牌 是因为本地化什么的没有提交上去

生成车牌

实际上自己写生成车牌的代码也挺简单的

print(fake.lexify(text='车牌: ?', letters='冀晋豫京')
          + fake.bothify(text='?#####', letters="ABCDE"))

生日

生日可以提供两个参数来规定生日的生成区间 date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115) 默认是0-115岁

print(fake.date_of_birth(minimum_age=20, maximum_age=35))

邮箱

print(fake.ascii_email())

基础类型

    print(fake.pybool())
    print(fake.pyint())
    print(fake.pyfloat())
    print(fake.pydecimal())

日期时间

日期时间生成是用的最多的,也是提供方法最多的,

日期

date_between(start_date='-30y', end_date='today') 生成的是Date 对象 在某个时间段内生成,默认是最近三十年,也可以加入参数来进行更改

日期加时间

date_time_between(start_date='-30y', end_date='now', tzinfo=None) 生成DateTime对象 在某个时间段内生成,默认是最近三十年,也可以加入参数来进行更改

生成占位段落

中文的段落不好看,还是用英文的段落吧

fakeUS = Faker('en_US')
print(fakeUS.paragraph(nb_sentences=5))

自定义生成

bothify

bothify(text='## ??', letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') 提供生成一个字符串的功能,根据以下规则替换文本中的每个占位符:数字符号 (‘#’) 替换为随机数字(0 到 9)。 问号 (‘?’) 被替换为来自字母的随机字符。 默认情况下,字母包含所有 ASCII 字母,包括大写和小写。 生成车牌那里后面的几位生成就是使用的这个方法。 print(fake.bothify(text='?#####', letters="ABCDE")))

lexify

lexify(text='????', letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') 生成一个字符串,文本中的每个问号 (‘?’) 替换为字母中的随机字符。 默认情况下,字母包含所有 ASCII 字母,包括大写和小写。 生成车牌前面的第一位就是用的这个方法,从给定的文字中随机拿一个值。 fake.lexify(text='车牌: ?', letters='冀晋豫京')

numerify

numerify(text='###')

  • ('#') 替换为随机数字(0 到 9)。
  • ('%') 替换为随机的非零数字(1 到 9)。
  • ('!') 替换为随机数字或空字符串。
  • ('@') 被替换为随机的非零数字或空字符串。
for _ in range(5):
     fake.numerify(text='Intel Core i%-%%##K vs AMD Ryzen % %%##X')

'Intel Core i9-8766K vs AMD Ryzen 5 8604X'
'Intel Core i5-3293K vs AMD Ryzen 5 9382X'
'Intel Core i8-9241K vs AMD Ryzen 6 7615X'
'Intel Core i8-9593K vs AMD Ryzen 1 9187X'
'Intel Core i8-6416K vs AMD Ryzen 6 2409X'

random_choices

random_choices(elements=('a', 'b', 'c'), length=None) 用element里面的数据生成一个随机抽样的对象列表,length可以控制长度,这个方法最重要的就是可以设置其中的元素的权重

fake.random_choices(elements=('a', 'b', 'c', 'd'), length=10)
fake.random_choices(elements=OrderedDict([("a", 0.45), ("b", 0.35), ("c", 0.15), ("d", 0.05), ]))

random_int

random_int( min=0 , max=9999 , step=1 ) 生成随机的整数

总结

人生苦短,我用 Python,在强大的Python帮助下,我们只需几行代码就实现我们的自动测试需求。