测试数据不会造?Fake Data!

本文介绍了如何使用Python的Faker库来生成各种逼真的测试数据,包括姓名、电话号码、信用卡信息等,从而避免手动输入和使用无效的测试数据。Faker提供了丰富的数据生成选项,并支持自定义Provider扩展,对于提高测试效率和数据质量非常有帮助。
摘要由CSDN通过智能技术生成

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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,感谢您的问题。 您可以使用 Python 库 faker 来生成测试数据。 下面是一个示例代码,可以生成一个包含 10 行、4 列的表格,每列的数据分别是: - 姓名(name) - 年龄(age) - 性别(gender) - 电子邮箱(email) 首先,需要安装 faker 库: ``` pip install faker ``` 然后,在代码中导入 faker 库: ```python from faker import Faker ``` 接着,创建一个 Faker 对象,并设置其使用的语言为中文: ```python fake = Faker(locale='zh_CN') ``` 接下来,我们可以使用 Faker 对象的方法来生成测试数据。例如,可以使用 `fake.name()` 方法生成姓名,使用 `fake.random_int()` 方法生成年龄,使用 `fake.random_elements()` 方法生成性别,使用 `fake.email()` 方法生成电子邮箱。 最后,我们可以将生成的数据保存到一个列表中,并使用循环打印出来。 完整的代码如下: ```python from faker import Faker fake = Faker(locale='zh_CN') # 创建一个列表,用于保存生成的测试数据 data = [] # 使用循环生成 10 行数据 for i in range(10): # 使用 faker 的方法生成测试数据 name = fake.name() age = fake.random_int(min=18, max=100) gender = fake.random_elements ### 回答2: 使用faker库生成测试数据的python代码示例如下: ```python from faker import Faker import random fake = Faker(locale='zh_CN') # 生成姓名 def generate_name(): return fake.name() # 生成手机号码 def generate_phone_number(): return fake.phone_number() # 生成地址 def generate_address(): return fake.address() # 生成生日 def generate_birthday(): return fake.date_of_birth().strftime('%Y-%m-%d') # 生成学历 def generate_education(): education_list = ['本科', '硕士', '博士', '大专', '高中', '初中', '小学'] return random.choice(education_list) # 生成表的测试数据 def generate_table_data(number_of_records): table_data = [] for _ in range(number_of_records): name = generate_name() phone_number = generate_phone_number() address = generate_address() birthday = generate_birthday() education = generate_education() record = { '姓名': name, '手机号码': phone_number, '地址': address, '生日': birthday, '学历': education } table_data.append(record) return table_data # 生成10条表的测试数据 table_data = generate_table_data(10) for record in table_data: print(record) ``` 以上代码使用faker库生成随机的中文姓名、手机号码、地址、生日和学历。在生成表的测试数据时,可以自定义生成的记录数目。代码会打印出生成的10条表的测试数据。 ### 回答3: 首先,你需要安装`Faker`模块。可以通过运行`pip install Faker`来安装。 下面是一个示例的Python代码,使用`Faker`库来生成上述表的测试数据: ```python from faker import Faker import random # 创建一个Faker对象 fake = Faker('zh_CN') # 生成用户数据 def generate_users(num_users): users = [] for _ in range(num_users): user = { 'id': fake.random_int(min=1), 'name': fake.name(), 'email': fake.email(), 'phone': fake.phone_number(), 'address': fake.address(), 'birthdate': fake.date_of_birth().strftime('%Y-%m-%d'), 'is_active': random.choice([True, False]) } users.append(user) return users # 生成产品数据 def generate_products(num_products): products = [] for _ in range(num_products): product = { 'id': fake.random_int(min=1), 'name': fake.word(), 'description': fake.text(), 'price': fake.pydecimal(left_digits=3, right_digits=2), 'quantity': fake.random_int(min=1, max=100) } products.append(product) return products # 生成订单数据 def generate_orders(users, products, num_orders): orders = [] for _ in range(num_orders): order = { 'id': fake.random_int(min=1), 'user_id': random.choice(users)['id'], 'product_id': random.choice(products)['id'], 'quantity': fake.random_int(min=1, max=5), 'order_date': fake.date_this_decade().strftime('%Y-%m-%d') } orders.append(order) return orders # 生成用户数据 users = generate_users(10) # 生成产品数据 products = generate_products(10) # 生成订单数据 orders = generate_orders(users, products, 20) # 打印测试数据 print('用户数据:') for user in users: print(user) print('产品数据:') for product in products: print(product) print('订单数据:') for order in orders: print(order) ``` 上述代码使用了`Faker`库中的一些常用方法,如`name()`生成姓名、`email()`生成邮箱地址、`phone_number()`生成电话号码、`address()`生成地址、`date_of_birth()`生成生日、`random_int()`生成随机整数等等。你可以根据需要自定义字段或数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值