一篇文章掌握自动生成测试数据--Python篇

在这里插入图片描述
在做功能测试或者自动化测试过程中,准备的数据常常会因为数据库中已有存在的数据而出来运行异常的情况。

举个例子,再测试注册用户的使用,会准备一个正确的测试数据,比如下面

在这里插入图片描述
如果系统中已经存在测试用户user1,那么再次注册就会发现user1不能成功注册。针对这种场景,普遍的做法是在自动化脚本执行之前把原来的用户user1 删掉。但是这种做法可能要涉及到数据库的相关操作,是比较麻烦也是比较危险的。

比较理想的一种操作是每次注册用户时都使用一个随机的用户名,并且保证每次随机的值都不一样,这样数据库中不会存在相同的用户名,就不会出现上述问题。

要想实现这样的操作,一种操作方式使用第三方库比如 python的 faker。

主要学习内容

faker自动生成测试数据

faker 使用

aker是python的一个第三方库,能够帮你自动模拟一些假数据。

https://faker.readthedocs.io/en/master/

安装

pip install Faker

一、基本使用

1、输入

from faker import Faker

f = Faker()
# 随机生成姓名
print(f.name())
# 随机生成地址
print(f.address())
# 随机生成email
print(f.email())
# 随机生成password
print(f.password())
# 随机生成一段文本
print(f.text())

输出

0018 Victor Mills
Brewerberg, RI 59924
karen59@gmail.com
3Iqq20KuK%
Keep have well year thousand science. Close drop father list behind hand. Time he themselves break more.

2、每次生成的数据都是不一样的。可以写一个for循环来查看数据

for _ in range(10):
    print(f.name())

输出

Daniel Palmer
Amanda Park
Stephanie Willis
Daniel Kerr
Shannon Boone
John Smith
Geoffrey Gibson
Eric Newman
Nicolas Gordon
Laura Jones

二、设置地域语言

默认faker出来的数据是英语,如果数据有地域限制,比如要使用的语言为中文,通过设置地域更改文本语言。

支持的语言列表如下:

ar_EG - Arabic (Egypt)
ar_PS - Arabic (Palestine)
ar_SA - Arabic (Saudi Arabia)
bg_BG - Bulgarian
bs_BA - Bosnian
cs_CZ - Czech
de_DE - German
dk_DK - Danish
el_GR - Greek
en_AU - English (Australia)
en_CA - English (Canada)
en_GB - English (Great Britain)
en_NZ - English (New Zealand)
en_US - English (United States)
es_ES - Spanish (Spain)
es_MX - Spanish (Mexico)
et_EE - Estonian
fa_IR - Persian (Iran)
fi_FI - Finnish
fr_FR - French
hi_IN - Hindi
hr_HR - Croatian
hu_HU - Hungarian
hy_AM - Armenian
it_IT - Italian
ja_JP - Japanese
ka_GE - Georgian (Georgia)
ko_KR - Korean
lt_LT - Lithuanian
lv_LV - Latvian
ne_NP - Nepali
nl_NL - Dutch (Netherlands)
no_NO - Norwegian
pl_PL - Polish
pt_BR - Portuguese (Brazil)
pt_PT - Portuguese (Portugal)
ro_RO - Romanian
ru_RU - Russian
sl_SI - Slovene
sv_SE - Swedish
tr_TR - Turkish
uk_UA - Ukrainian
zh_CN - Chinese (China)
zh_TW - Chinese (Taiwan)

使用中文,则可以设置

from faker import Faker
# 设置中文
f = Faker("zh_CN")

print(f.name())

三、Provider

faker 库在设计上,为了解耦,将 Provider 对象做成了 Faker 对象的”插件“。Faker 可以添加一个个 Provider 对象,Provider 对象为 Faker 对象提供了生成某项数据的核心实现。就相当于 Faker 对象是一个生成器,它的生成功能依赖于什么呢?依赖于 Provider,是 Provider 提供给了 Faker 对象生成某项数据的能力。

正是因为 Faker 对象内置了一些 Provider 对象,Faker 对象才可以生成刚才所要求的姓名、地址和文本。

from faker import  Faker
faker = Faker('zh_CN')
# 查看内置Provider
print(faker.providers)

输出

[<faker.providers.user_agent.Provider object at 0x0000022CAED41860>, <faker.providers.ssn.zh_CN.Provider object at 0x0000022CAED41518>,

原来我们调用的方法就是 Faker 对象调用的 Provider 里面的对应方法,比如 name 就是 faker.providers.person.zhCN.Provider 里面的 name 方法,二者是一致的,我们扒一扒源码验证下,源码https://github.com/joke2k/faker/blob/master/faker/providers/person/init.py 里面定义了name 方法,然后 Faker 动态地将这个方法引入进来了,就可以使用了。

from faker import Faker

fake = Faker("zh_CN")

print(fake.last_name())
print
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值