超实用的Python第三方库——造数据神器Faker简介

发表于:2022-7-28 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试蔡坨坨    来源:博客园

#
Python
  众所周知,Python 语法简洁,功能强大,通过简单的代码就能实现许多实用的功能,上到人工智能,下到少儿编程,很大原因得益于它有强大的标准库以及非常丰富的第三方库,有很多现成的轮子可以用。
  今天,分享一个有趣又实用的 Python 第三方库,造数据神器 Faker。
  前言
  在日常测试工作中,少不了造数据,你的测试数据是不是长这样呢?
test
test1
aaa
这是一段文字
这是一段很长长长长长长长长长长长长长长长长长长长长长长长长长长长长的数据
  随机数据不知道怎么生成,用尽毕生所学,瞬间感觉江郎才尽。
  再者说,人的大脑是有限的,而我们的世界是无限的,当我们需要生成测试数据时,往往会按照我们的标准数据生成,也就是生成的数据并不完全随机,而是按照我们的固定模式生成。有没有办法能按照相对随机的方式生成数据呢?
  有了 Faker,就能轻松帮我们创造一些看似真实的 “假数据”,是一款非常好用的数据生成神器。
  安装
  官网:https://faker.readthedocs.io
pip3 install faker
  Faker 对象初始化
from faker import Faker

faker = Faker()

# 姓名、邮箱、地址、长文本
print("name:", faker.name())
print("email:", faker.email())
print("address:", faker.address())
print("text:", faker.text())
print("state", faker.state())
  多语言多区域支持
  例如:zh_CN(简体中文)、zh_TW(繁体中文)、zh_TW(台湾)、en_US(美国英文)、en_GB(英国英文)、de_DE(德文)、ja_JP(日文)、ko_KR(韩文)、fr_FR(法文)……
faker_zh = Faker("zh_CN")
  需要注意的是不同区域下的方法并不是完全一致的,比如中国有省的概念 faker_zh.province (),而美国就没有省的概念,可能就是州 faker_zh.state (),因此在美国的区域下用 province () 就会报错。
  常用方法
# 中国区域 人物相关
# 姓名相关
print("姓名:", faker_zh.name())
print("女性姓名:", faker_zh.name_female())
print("男性姓名:", faker_zh.name_male())
print("男性名:", faker_zh.first_name_male())
print("男性姓:", faker_zh.last_name_male())
print("罗马名:", faker_zh.romanized_name())
# 联系方式
print("邮箱:", faker_zh.email())
print("手机号:", faker_zh.phone_number())
print("手机号段:", faker_zh.phonenumber_prefix())
# 身份
print("身份证号:", faker_zh.ssn())
# 公司
print("公司名称(长):", faker_zh.company())  # 快讯网络有限公司
print("公司名称(短):", faker_zh.company_prefix())  # 快讯
print("公司性质:", faker_zh.company_suffix())  # 网络有限公司
print("职位:", faker_zh.job())
print("信用卡号:", faker_zh.credit_card_number())
print("信用卡到期日:", faker_zh.credit_card_expire())
print("信用卡信息:", faker_zh.credit_card_full())
print("信用卡信息:", faker_zh.credit_card_full())
print("信用卡类型:", faker_zh.credit_card_provider())

# 网络信息
print("域名:", faker_zh.domain_name())
print("url:", faker_zh.url())

# 浏览器信息
print("谷歌浏览器user_agent信息:", faker_zh.chrome())  # 在做接口测试时请求头经常需要传一个user_agent
print("火狐浏览器user_agent信息:", faker_zh.firefox())
print("user_agent信息:", faker_zh.user_agent())

# 文件信息
print("文件扩展名:", faker_zh.file_extension())  # mp4
print("文件名(包含扩展名):", faker_zh.file_name())  # 图片.bmp
print("文件路径:", faker_zh.file_path())
print("随机mime type:", faker_zh.mime_type())

# 随机数
print("三位随机数:", faker_zh.numerify())
print("0-9随机数:", faker_zh.random_digit())
print("1-9随机数:", faker_zh.random_digit_not_null())
print("随机数,默认0-9999,可以设置min、max:", faker_zh.random_int())  # random_int(50, 100)
print("随机数字,参数digits可以设置位数:", faker_zh.random_number(8))
print("浮点数:", faker_zh.pyfloat(left_digits=5, right_digits=2, positive=True))  # 69156.22 positive是否只有正数
print("decimal:", faker_zh.pydecimal(left_digits=5, right_digits=2, positive=True))

# 文本类型
print("随机字符串:", faker_zh.pystr())
print("随机词语:", faker_zh.word())
print("随机文章(虽然至今没有一句能看懂什么意思):", faker_zh.text())
print("随机uudi:", faker_zh.uuid4())

# 随机日期
print("随机生成指定范围内的日期:", faker_zh.date_between())

# 档案信息
print("档案信息:", faker_zh.profile())
print("档案信息(简单):", faker_zh.simple_profile())

# 中国区域 地理信息
print("市/县:", faker_zh.city_suffix())
print("国家:", faker_zh.country())
print("国家编码:", faker_zh.country_code())
print("区:", faker_zh.district())
print("详细地址:", faker_zh.address())
print("地理坐标:", faker_zh.coordinate())
print("纬度:", faker_zh.latitude())
print("经度:", faker_zh.longitude())
print("邮编:", faker_zh.postcode())
print("街道地址:", faker_zh.street_address())
print("街道名:", faker_zh.street_name())
print("街/路:", faker_zh.street_suffix())
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号