测试数据不会造?可以用这个工具

官方账号 2020-07-0119:51:42经验总结评论268字数 1929阅读6分25秒阅读模式

测试数据不会造?可以用这个工具文章源自玩技e族-https://www.playezu.com/23427.html

测试过程中,大家应该都遇到过各种各样的数据构造问题。e.g. 构造一批通讯录、构造一批用户三要素(姓名手机号身份证)、构造一批银行卡数据……

这时候,测试数据大多数可能是这样的:文章源自玩技e族-https://www.playezu.com/23427.html

张三, 130 0000 0001文章源自玩技e族-https://www.playezu.com/23427.html

李四, 130 0000 0002文章源自玩技e族-https://www.playezu.com/23427.html

王五, 130 0000 0003文章源自玩技e族-https://www.playezu.com/23427.html

……文章源自玩技e族-https://www.playezu.com/23427.html

或者就一顿乱敲,造出来一批。文章源自玩技e族-https://www.playezu.com/23427.html

你是不是这样做的呢?坦白的说,之前的小编就是酱紫。文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

这样的测试数据,不仅要自己手动敲,还假的不能再假,浪费时间、浪费人力、数据价值低……后来想了个办法,同步线上数据,但是还要加密解密,也要挨个库表去找自己想要的数据。文章源自玩技e族-https://www.playezu.com/23427.html

直到有一天,小编遇到了Faker,可以生成一批各种各样的看起来“像真的一样”的假数据文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

Fake哪些数据?文章源自玩技e族-https://www.playezu.com/23427.html

PART 01文章源自玩技e族-https://www.playezu.com/23427.html

目前Faker库中提供了三大类可以“构造”出的数据,官方划分为: Standard Providers、Community Providers、Localized Providers。文章源自玩技e族-https://www.playezu.com/23427.html

Standard Providers文章源自玩技e族-https://www.playezu.com/23427.html

包含了通用信用卡、颜色、职业、日期时间等数据的生成方法。文章源自玩技e族-https://www.playezu.com/23427.html

Community Providers文章源自玩技e族-https://www.playezu.com/23427.html

由一些Community提供的,目前包括Web相关、云相关、WiFi、微服务、信用分数据。文章源自玩技e族-https://www.playezu.com/23427.html

Community Providers文章源自玩技e族-https://www.playezu.com/23427.html

根据地区/语言差异,本地化提供的一些方法,如简体中文下生成的姓名和繁体中文下生成的姓名是不一样的。文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

fake几条通讯录文章源自玩技e族-https://www.playezu.com/23427.html

for _ in range(3): print('姓名:', fake.name(), ' 手机号:', fake.phone_number()) #fake 是由Faker创建的对象,且指定了中文

姓名:王霞  手机号:15744918509文章源自玩技e族-https://www.playezu.com/23427.html

姓名:李旭  手机号:18025187089文章源自玩技e族-https://www.playezu.com/23427.html

姓名:郭娟  手机号:13196551713文章源自玩技e族-https://www.playezu.com/23427.html

fake一组信用卡数据文章源自玩技e族-https://www.playezu.com/23427.html

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文章源自玩技e族-https://www.playezu.com/23427.html

Card Provider:  Mastercard文章源自玩技e族-https://www.playezu.com/23427.html

Card Security Code:  215文章源自玩技e族-https://www.playezu.com/23427.html

Card Expire:  07/20文章源自玩技e族-https://www.playezu.com/23427.html

可以用dir(fake),看Faker库都可以fake哪些数据,目前Faker支持近300种数据,此外还支持自己进行扩展。文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

测试数据不会造?可以用这个工具

怎样fake数据文章源自玩技e族-https://www.playezu.com/23427.html

PART 02文章源自玩技e族-https://www.playezu.com/23427.html

前面介绍了Faker可以fake的数据,下面小编带大家实际操作一遍。文章源自玩技e族-https://www.playezu.com/23427.html

第一步文章源自玩技e族-https://www.playezu.com/23427.html

安装Faker库文章源自玩技e族-https://www.playezu.com/23427.html

pip install Faker

第二步文章源自玩技e族-https://www.playezu.com/23427.html

用安装好的Faker库创建一个Faker对象文章源自玩技e族-https://www.playezu.com/23427.html

from faker import Fakerfake = Faker()

第三步文章源自玩技e族-https://www.playezu.com/23427.html

指定语言文章源自玩技e族-https://www.playezu.com/23427.html

fake = Faker("zh_CN")

第四步文章源自玩技e族-https://www.playezu.com/23427.html

fake数据文章源自玩技e族-https://www.playezu.com/23427.html

之后用fake对象就可以调用不同的方法生成各种数据了。文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

扩展Faker文章源自玩技e族-https://www.playezu.com/23427.html

PART 03文章源自玩技e族-https://www.playezu.com/23427.html

如果这些数据还不够生成数据使用,Faker还支持创建自定义的Provider生成数据。文章源自玩技e族-https://www.playezu.com/23427.html

from faker import Fakerfrom faker.providers import BaseProvider
# 创建自定义Providerclass CustomProvider(BaseProvider): def customize_ua(self): return 'test_Faker_customize_ua'
# 添加Providerfake = Faker()fake.add_provider(CustomProvider)print(fake.customize_ua())

test_Faker_customize_ua文章源自玩技e族-https://www.playezu.com/23427.html

是不是十分简单,方便扩展呢。以后常用的数据就可以自己创建Provider用自动化的方法生成了,不仅节省了时间,复用性也变高了。文章源自玩技e族-https://www.playezu.com/23427.html

测试数据不会造?可以用这个工具

写在最后文章源自玩技e族-https://www.playezu.com/23427.html

The Last文章源自玩技e族-https://www.playezu.com/23427.html

阅读Faker的源码可以很容易发现,Faker实际是维护了一个“数据库”,这个“数据库”强大在做了很多Localized的处理和兼容。此外,作为一个开源的库,Faker的源码是非常值得研究的,也是Python新手可以用来练开源项目的利器文章源自玩技e族-https://www.playezu.com/23427.html

当然,缺点也就显而易见,它不是那么的智能,生成的数据是随机生成,数据量也不是那么大。文章源自玩技e族-https://www.playezu.com/23427.html

来源:搜狗测试,作者:liang,如有侵权请联系删除文章源自玩技e族-https://www.playezu.com/23427.html

文章源自玩技e族-https://www.playezu.com/23427.html
注意:本文法律责任由该文章作者承担,侵权请联系2523030730▷诈骗举报◁▷新闻不符◁▷我要投稿◁
  • 我们QQ群
  • QQ扫一扫
  • weinxin
  • 微信公众号
  • 公众号扫一扫
  • weinxin
官方账号