有了faker,再也不用为了构造测试数据而烦恼啦!
在软件需求、开发、测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据。在手动制造数据的过程中,可能需要花费大量精力和工作量,此时可以借助Python对应的包来协助完成这方面的工作。
1.什么是Faker
不是指某联盟的中单大魔王,Faker是一个Python包,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。
2.安装Faker
pip install faker
3.Faker的使用
引入包:
from faker import Faker
初始化:
f=Faker(locale='zh_CN')
关于初始化参数locale:为生成数据的文化选项,默认为en_US,只有使用了相关文化,才能生成相对应的随机信息(比如:名字,地址,邮编,城市,省份等)
可选择的文化信息:
ar_EG - Arabic (Egypt) | ar_PS - Arabic (Palestine) | ar_SA - Arabic (Saudi Arabia) |
bg_BG - Bulgarian |
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_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 | it_IT - Italian | ja_JP - Japanese | 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) |
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 class GenerateRandomTestData:
'''
生成随机测试数据
''' def __init__(self):
self.f = Faker(locale='zh_CN') # zh_CN代表中文,不传locale默认值为en_US def random_name(self):
'''
随机姓名
:return:
'''
return self.f.name() def random_username(self):
'''
随机用户名
:return:
'''
return self.f.user_name() def random_password(self, length=10, special_chars=True, digits=True, upper_case=True, lower_case=True):
'''
随机密码
:param length: 密码长度
:param special_chars: 是否可使用特殊字符
:param digits: 是否包含数字
:param upper_case: 是否包含大写字母
:param lower_case: 是否包含小写字母
:return:
'''
return self.f.password(length=length,
special_chars=special_chars,
digits=digits,
upper_case=upper_case,
lower_case=lower_case) def random_mobile_phone_num(self):
'''
随机手机号
:return:
'''
return self.f.phone_number() def random_id_card_num(self):
'''
随机身份证号
:return:
'''
return self.f.ssn() def random_email(self):
'''
随机邮箱
:return:
'''
return self.f.email() def random_address(self):
'''
随机地址
:return:
'''
return self.f.address() def random_url(self):
'''
随机url
:return:
'''
return self.f.url() def random_ipv4(self):
'''
随机ipv4(IP号)
:return:
'''
return self.f.ipv4() def random_md5(self):
'''
随机MD5加密串
:return:
'''
return self.f.md5()
常用方法一览
- f.name() 生成姓名
- f.address() 生成地址
- city_suffix() 市/县
- country() 国家
- country_code() 国家编码
- district() 区
- geo_coordinate() 地理坐标
- latitude() 地理坐标(纬度)
- longitude() 地理坐标(经度)
- lexify() 替换所有问号(“?”)带有随机字母的事件
- numerify() 三位随机数字
- postcode() 邮编
- province() 省份
- street_address() 街道地址
- street_name() 街道名
- street_suffix() 街/路
- random_digit() 0~9随机数
- random_digit_not_null() 1~9的随机数
- random_element() 随机字母
- random_int() 随机数字,默认0~9999,可以通过设置min,max来设置
- random_letter() 随机字母
- random_number() 随机数字,参数digits设置生成的数字位数
- color_name() 随机颜色名
- hex_color() 随机HEX颜色
- rgb_color() 随机RGB颜色
- safe_color_name() 随机安全色名
- safe_hex_color() 随机安全HEX颜色
- bs() 随机公司服务名
- company() 随机公司名(长)
- company_prefix() 随机公司名(短)
- company_suffix() 公司性质
- credit_card_expire() 随机信用卡到期日
- credit_card_full() 生成完整信用卡信息
- credit_card_number() 信用卡号
- credit_card_provider() 信用卡类型
- credit_card_security_code() 信用卡安全码
- currency_code() 货币编码
- am_pm() AM/PM
- century() 随机世纪
- date() 随机日期
- date_between() 随机生成指定范围内日期,参数:start_date,end_date取值:具体日期或者today,-30d,-30y类似
- date_between_dates() 随机生成指定范围内日期,用法同上
- date_object() 随机生成从1970.1.1到指定日期的随机日期
- date_this_month() 随机本月日期
- date_this_year() 随机本年日期
- date_time() 随机生成指定时间(1970年1月1日至今)
- date_time_ad() 生成公元1年到现在的随机时间
- date_time_between() 用法同dates
- future_date() 未来日期
- future_datetime() 未来时间
- month() 随机月份
- month_name() 随机月份(英文)
- past_date() 随机生成已经过去的日期
- past_datetime() 随机生成已经过去的时间
- time() 随机24小时时间
- timedelta() 随机获取时间差
- time_object() 随机24小时时间,time对象
- time_series() 随机TimeSeries对象
- timezone() 随机时区
- unix_time() 随机Unix时间
- year() 随机年份
- file_extension() 随机文件扩展名
- file_name() 随机文件名(包含扩展名,不包含路径)
- file_path() 随机文件路径(包含文件名,扩展名)
- mime_type() 随机mime Type
- ascii_company_email() 随机ASCII公司邮箱名
- ascii_email() 随机ASCII邮箱
- ascii_free_email() 随机ASCII免费邮箱
- ascii_safe_email() 随机ASCII安全邮箱
- company_email() 随机公司邮箱
- domain_name() 生成域名
- domain_word() 域词(不包含后缀)
- email() 随机邮箱
- free_email() 免费邮箱
- free_email_domain() 免费邮箱后缀(如:yahoo.com)
- safe_email() 安全邮箱
- image_url() 随机URL地址
- ipv4() 随机IP4地址
- ipv6() 随机IP6地址
- mac_address() 随机MAC地址
- tld() 网址域名后缀(.com/.net/.cn等,不包括.)
- uri() 随机URI地址
- uri_extension() 网址文件后缀
- uri_page() 网址文件(不包含后缀)
- uri_path() 网址文件路径(不包含文件名)
- url() 随机URL地址
- user_name() 随机用户名
- isbn10() 随机ISBN(10位)
- isbn13() 随机ISBN(13位)
- job() 随机职位
- paragraph() 随机生成一个段落
- paragraphs() 随机生成多个段落,通过参数nb来控制段落数,返回数组
- sentence() 随机生成一句话
- sentences() 随机生成多句话,与段落类似
- text() 随机生成一篇文章
- word() 随机生成词语
- words() 随机生成多个词语,用法与段落,句子,类似
- binary() 随机生成二进制编码
- boolean() True/False
- language_code() 随机生成两位语言编码
- locale() 随机生成语言/国际信息
- md5() 随机生成MD5
- null_boolean() NULL/True/False
- password() 随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母
- sha1() 随机SHA1
- sha256() 随机SHA256
- uuid4() 随机UUID
- first_name() 名
- first_name_female() 女性名
- first_name_male() 男性名
- first_romanized_name() 罗马名
- last_name() 姓
- last_name_female() 女姓
- last_name_male() 男姓
- last_romanized_name() 罗马姓
- name() 随机生成全名
- name_female() 男性全名
- name_male() 女性全名
- romanized_name() 罗马名
- msisdn() 移动台国际用户识别码,即移动用户的ISDN号码
- phone_number() 随机生成手机号
- phonenumber_prefix() 随机生成手机号段
- profile() 随机生成档案信息
- simple_profile() 随机生成简单档案信息
- pybool() 随机生成布尔值
- pydecimal() 随机生成decimal数字
- pydict() 随机生成字典
- pyfloat() 随机生成浮点数
- pyint() 随机生成整数
- pyiterable() 随机生成元组/列表/集合
- pylist() 随机生成列表
- pyset() 随机生成集合
- pystr() 随机生成字符串
- pystruct() 随机生成嵌套结构数据
- pytuple() 随机生成元组
- ssn() 生成身份证号
- chrome() 随机生成Chrome的浏览器user_agent信息
- firefox() 随机生成FireFox的浏览器user_agent信息
- internet_explorer() 随机生成IE的浏览器user_agent信息
- opera() 随机生成Opera的浏览器user_agent信息
- safari() 随机生成Safari的浏览器user_agent信息
- linux_platform_token() 随机Linux信息
- user_agent() 随机user_agent信息
有了faker,再也不用为了构造测试数据而烦恼啦!的更多相关文章
- 妈妈再也不用担心别人问我是否真正用过redis了
1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...
- 有了这个,再也不用每次连新机器都要设置secure crt属性了
我连服务器用的是secure crt,每次ssh新服务器的时候都得手动设置字符编码和背景颜色,今天问了旁边的开发原来可以全局设置,以后连服务器的时候就再也不用手动设置相关属性了.步骤如下: 一开始点击 ...
- 锋利的js之妈妈再也不用担心我找错钱了
用js实现收银功能. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...
- 【阿里云产品公测】离线归档OAS,再也不用担心备份空间了
[阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步 1.1 初识OAS 啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Se ...
- 学会这个删库再也不用跑路了~ --技术流ken
前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...
- 有了 tldr,妈妈再也不用担心我记不住命令了
引言 有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」 是的,在一些人眼里,这个黑黑 ...
- 妈妈再也不用担心我使用git了
妈妈再也不用担心我使用git了 Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:ms ...
- DB2 函数快速构造测试数据
函数快速构造测试数据 [案例]使用DB2内置函数快速构造测试数据 无论您是在用原型证明某一概念,还是开发一个全新的应用程序,或者只是学习 SQL,您都需要在您的应用程序上运行测试数据.为了有效地测试应 ...
- 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了
前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...
随机推荐
- PyCharm 快捷键失效解决办法
PyCharm快捷键用着用着失效了 ......修改设置如下 重新启动Pycharm即可 原博客地址:https://blog.csdn.net/jacke121/article/details/82 ...
- 如何使用第三方ui库vant-weapp
如何使用第三方ui库vant-weapp 1==>创建文件夹demo 2==> 在小程序 中打开 注意 要先在小程序中打开 如果要想在小程序的开发工具中打开某一个 文件夹 要么是空文件夹 ...
- web攻击与防御技术--SQL注入
sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...
- post请求四种传送正文的方式
一.简介 HTTP协议规定post提交的数据必须放在消息主体(entity-body)中,但协议没有规定数据必须使用什么编码方式.HTTP协议是以ASCII码传输,建立再TCP/IP协议之上的应用层规 ...
- 原子类解决i++问题
原子类解决i++问题 import java.util.concurrent.atomic.AtomicInteger; /** * 一个完整的i++,多线程并发安全问题演示.及使用java.util ...
- P3747 [六省联考2017]相逢是问候
题意 如果对一个数操作\(k\)次,那么这个数会变成\(c^{c^{...^{a_i}}}\),其中\(c\)有\(k\)个. 根据P4139 上帝与集合的正确用法这道题,我们可以知道一个数不断变为自 ...
- IT兄弟连 HTML5教程 设置IE9以下版本浏览器支持HTML5
HTML2.HTML5刚发布时由于各浏览器之间的标准不统一,开发者的时间都浪费在解决Web浏览器之间的兼容性上.但由于W3C和WHATWG对HTML5新版本的制定,以及近年来对HTML5的使用,再加上 ...
- 高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程
流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...
- Selenium(四):CSS选择器(一)
1. CSS选择器 前面我们学习了根据 id.class属性.tag名选择元素. 如果我们要选择的元素没有id.class 属性,或者有些我们不想选择的元素也有相同的id.class属性值,怎么办呢? ...
- 用Python制作的一本道生成器,最后笑喷了!
今天皮一下,众所周知,一本道是一本正经的胡说八道的简称,想必写过议论文的小伙伴,都知道引经据典是议论文高分必备,套上名人的话更加具有说服力是语文老师必教的知识点. 所以呢,今天介绍的这个生成器就走的是 ...