在测试过程中,大家应该都遇到过各种各样的数据构造问题。e.g. 构造一批通讯录、构造一批用户三要素(姓名手机号身份证)、构造一批银行卡数据……
这时候,测试数据大多数可能是这样的:
张三, 130 0000 0001
李四, 130 0000 0002
王五, 130 0000 0003
……
或者就一顿乱敲,造出来一批。
你是不是这样做的呢?坦白的说,之前的小编就是酱紫。
这样的测试数据,不仅要自己手动敲,还假的不能再假,浪费时间、浪费人力、数据价值低……后来想了个办法,同步线上数据,但是还要加密解密,也要挨个库表去找自己想要的数据。
直到有一天,小编遇到了Faker,可以生成一批各种各样的看起来“像真的一样”的假数据。
Fake哪些数据?
目前Faker库中提供了三大类可以“构造”出的数据,官方划分为: Standard Providers、Community Providers、Localized Providers。
Standard Providers
包含了通用信用卡、颜色、职业、日期时间等数据的生成方法。
Community Providers
由一些Community提供的,目前包括Web相关、云相关、WiFi、微服务、信用分数据。
Community Providers
根据地区/语言差异,本地化提供的一些方法,如简体中文下生成的姓名和繁体中文下生成的姓名是不一样的。
fake几条通讯录
for _ in range(3): print('姓名:', fake.name(), ' 手机号:', fake.phone_number()) #fake 是由Faker创建的对象,且指定了中文
姓名:王霞 手机号:15744918509
姓名:李旭 手机号:18025187089
姓名:郭娟 手机号:13196551713
fake一组信用卡数据
print('Card Number:', fake.credit_card_number(card_type=None)) print('Card Provider', fake.credit_card_provider(card_type=None)) print('Card Security Code', fake.credit_card_security_code(card_type=None)) print('Card Expire', fake.credit_card_expire()) #fake 是由Faker创建的对象
Card Number: 2720041566219373
Card Provider: Mastercard
Card Security Code: 215
Card Expire: 07/20
可以用dir(fake),看Faker库都可以fake哪些数据,目前Faker支持近300种数据,此外还支持自己进行扩展。
怎样fake数据
前面介绍了Faker可以fake的数据,下面小编带大家实际操作一遍。
第一步、安装Faker库
pip install Faker
第二步、用安装好的Faker库创建一个Faker对象
from faker import Faker fake = Faker()
第三步、指定语言
fake = Faker("zh_CN")
第四步、fake数据
之后用fake对象就可以调用不同的方法生成各种数据了。
扩展Faker
如果这些数据还不够生成数据使用,Faker还支持创建自定义的Provider生成数据。
from faker import Faker from faker.providers import BaseProvider # 创建自定义Provider class CustomProvider(BaseProvider): def customize_ua(self): return 'test_Faker_customize_ua' # 添加Provider fake = Faker() fake.add_provider(CustomProvider) print(fake.customize_ua()) test_Faker_customize_ua
是不是十分简单,方便扩展呢。以后常用的数据就可以自己创建Provider用自动化的方法生成了,不仅节省了时间,复用性也变高了。
写在最后
阅读Faker的源码可以很容易发现,Faker实际是维护了一个“数据库”,这个“数据库”强大在做了很多Localized的处理和兼容。此外,作为一个开源的库,Faker的源码是非常值得研究的,也是Python新手可以用来练开源项目的利器。
当然,缺点也就显而易见,它不是那么的智能,生成的数据是随机生成,数据量也不是那么大。
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。