zoukankan      html  css  js  c++  java
  • 测试数据不会造?Fake Data!

    Python & Faker

    测试数据不会造?

    在测试过程中,大家应该都遇到过各种各样的数据构造问题。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用自动化的方法生成了,不仅节省了时间,复用性也变高了。

    写在最后

    The Last

    阅读Faker的源码可以很容易发现,Faker实际是维护了一个“数据库”,这个“数据库”强大在做了很多Localized的处理和兼容。此外,作为一个开源的库,Faker的源码是非常值得研究的,也是Python新手可以用来练开源项目的利器。

    当然,缺点也就显而易见,它不是那么的智能,生成的数据是随机生成,数据量也不是那么大。

    【GitHub】https://github.com/joke2k/faker

    【Docs】https://faker.readthedocs.io/en/master/

    本文转自:搜狗测试

    end

    
    
  • 相关阅读:
    PowerDesigner反向工程操作步骤 以PowerDesigner15为例
    RegularExpressionValidator控件中正则表达式用法
    在C#中进行数据纵向不定行转横向列,多条信息成一行,例如员工薪资信息
    Oracle常见等待事件说明
    ORACLE 绑定变量用法总结(转)
    Configure Oracle 11gR2 RAC 一节点执行root.sh脚本报错
    ORACLE ASH/AWR
    db file sequential read 事件的优化(一)
    Redo Log Buffer的大小设置转载
    Oracle 判断 并 手动收集 统计信息 脚本
  • 原文地址:https://www.cnblogs.com/finer/p/14127577.html
Copyright © 2011-2022 走看看