测试数据不会造?Fake Data!

发表于:2020-6-22 10:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:liang    来源:搜狗测试

  测试数据不会造?
  在测试过程中,大家应该都遇到过各种各样的数据构造问题。e.g. 构造一批通讯录、构造一批用户三要素(姓名手机号身份证)、构造一批银行卡数据……
  这时候,测试数据大多数可能是这样的:
   张三, 130 0000 0001
  李四, 130 0000 0002
  王五, 130 0000 0003
  ……
  或者就一顿乱敲,造出来一批。
  你是不是这样做的呢?坦白的说,之前的小编就是酱紫。
  这样的测试数据,不仅要自己手动敲,还假的不能再假,浪费时间、浪费人力、数据价值低……后来想了个办法,同步线上数据,但是还要加密解密,也要挨个库表去找自己想要的数据。
  直到有一天,小编遇到了Faker,可以生成一批各种各样的看起来“像真的一样”的假数据。
  Fake哪些数据?
  PART 01
  目前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数据
  PART 02
  前面介绍了Faker可以fake的数据,下面小编带大家实际操作一遍。
  第一步
  安装Faker库
 pip install Faker
  第二步
  用安装好的Faker库创建一个Faker对象
   from faker import Faker
  fake = Faker()
  第三步 指定语言
 fake = Faker("zh_CN")
  第四步 fake数据
  之后用fake对象就可以调用不同的方法生成各种数据了。
  扩展Faker PART 03
  如果这些数据还不够生成数据使用,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新手可以用来练开源项目的利器。
  当然,缺点也就显而易见,它不是那么的智能,生成的数据是随机生成,数据量也不是那么大。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 崔术森
    2020-7-02 09:50:06

    学到了,赞一个

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号