在软件需求、开发、测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据。在手动制造数据的过程中,可能需要花费大量精力和工作量,此时可以借助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,再也不用为了构造测试数据而烦恼啦!的更多相关文章

  1. 妈妈再也不用担心别人问我是否真正用过redis了

    1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...

  2. 有了这个,再也不用每次连新机器都要设置secure crt属性了

    我连服务器用的是secure crt,每次ssh新服务器的时候都得手动设置字符编码和背景颜色,今天问了旁边的开发原来可以全局设置,以后连服务器的时候就再也不用手动设置相关属性了.步骤如下: 一开始点击 ...

  3. 锋利的js之妈妈再也不用担心我找错钱了

    用js实现收银功能. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...

  4. 【阿里云产品公测】离线归档OAS,再也不用担心备份空间了

    [阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步  1.1 初识OAS  啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Se ...

  5. 学会这个删库再也不用跑路了~ --技术流ken

    前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...

  6. 有了 tldr,妈妈再也不用担心我记不住命令了

    引言 有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」 是的,在一些人眼里,这个黑黑 ...

  7. 妈妈再也不用担心我使用git了

    妈妈再也不用担心我使用git了 Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:ms ...

  8. DB2 函数快速构造测试数据

    函数快速构造测试数据 [案例]使用DB2内置函数快速构造测试数据 无论您是在用原型证明某一概念,还是开发一个全新的应用程序,或者只是学习 SQL,您都需要在您的应用程序上运行测试数据.为了有效地测试应 ...

  9. 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了

    前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...

随机推荐

  1. 1、web爬虫,requests请求

    requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一.不需要用 ...

  2. BOM的初级理解

    1.什么是BOM,BOm有什么作用? BOM和DOM.ES是JavaScript的重要三个组成部分: 其中BOM是专门操作浏览器的API,其实他就是一种兼容性问题,这其中问题比较大就是IE浏览器,谁叫 ...

  3. 这可能是最漂亮的Spring事务管理详解

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  4. ubuntu 默认python版本切换

    电脑上面有些脚本是python2的,有些是python3的,但是系统默认是python2,需要设置环境变量来进行切换. python2切换到python3: echo alias python=pyt ...

  5. Java描述设计模式(12):外观模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在移动互联网没有普及之前,去饭店吃饭的流程大致如下:选座位,排队,点菜,结账.后来移动互联网普及,通过手机APP就 ...

  6. linux-VMtools安装

    一.解决的问题 1.剪切板无法共享 2.共享文件夹的设置 3.窗口无法自适应 二. 安装 1.进入centos 2.点击VMware菜单--->install VMware tools 3.打开 ...

  7. 【SDUT】2019SDUTACM第一次选拔赛 F- X的追求道路

    Problem Description X在大家的帮助下终于找到了一个妹纸,于是开始了漫漫的追求之路,那么大家猜一猜X能不能追的上呢? X初始对妹纸有一个心动值,妹纸对X有一个好感值,在追求时发生的的 ...

  8. 如何制作gif图片?教你把gif图片缩小100倍大小的妙招!

    移动互联网是短视频的时代,5G的到来更是让短视频蓬勃发展,视频的发展让人们看到了动态的机会,图片也需要动起来,图片动起来应该是比较早的,gif图片很早就有,我们常见的动态表情,现在用的比较多的是视频的 ...

  9. OC深浅复制

    浅复制:指针的复制 深复制:内容的复制 主要有两个关键字  copy 和mutablecopy 对于基本类型 判断深浅方法 1.只要=右边从创建到赋值,至少包含一个NSMutable便会重新生成一个对 ...

  10. OPENGL 入门

    检测设备支持版本,判断是否支持opengl 2.0版本 初始化设置OpenGLES2.0 实现接口GLSurfaceView.Renderer 渲染 绘制图形 1.检测设备支持版本,判断是否支持ope ...