小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在项目开发、测试的过程中,难免需要一批测试数据来测试代码是否正常运行,这时,就需要我们手动制造一些数据,需要的数据量比较小还好,如果比较大的话,就会很繁复,又容易出错。
而且,手动创造的数据往往都是一些不友好的数据,比如:
测试1, 11111 123456789
测试2, 22222 123456789
测试3, 33333 987654321
...
都是一些无意义的假数据,老实说,我偶尔也这么做。
但是,仔细想一下,这样的测试数据,也太鸡肋了,浪费时间不说,关键是毫无意义。
哎,Python中有个第三方库可以帮助我们解决这个问题,那就是Faker
库,使用它可以生成各种各样的看起来像真数据一样的假数据。
我们可以使用pip install Faker
命令进行安装。
简单使用
Faker使用起来也非常简单,从faker模块中导入Faker类,然后实例化这个类,就可以调用相关方法使用了。
from faker import Faker
fake = Faker()
name = fake.name()
address = fake.address()
print(name)
print(address)
执行结果如下:
Alicia Miller
3944 Steven Forges
Johnfort, FL 57383
上述代码我们生成了一个名字和一个地址,Faker库默认生成的是英文数据,我们可以使用locale参数指定语言,例如:
from faker import Faker
fake = Faker(locale='zh_CN')
name = fake.name()
address = fake.address()
print(name)
print(address)
张琳
北京市台湾县沈河胡街P座 309525
是不是看起来还不错,就是这个北京市台湾县给我整的猝不及防,其实生成的地址并不是真实的地址,而是随机组合出来的,也就是将省、市、道路之类的随机组合在一起,有出入也正常,不影响使用,还要啥自行车。
当然。还支持其他的语言,部分语言代码如下:
- 简体中文:zh_CN
- 繁体中文:zh_TW
- 美国英文:en_US
- 英国英文:en_GB
- 韩文:ko_KR
- 日文:ja_JP
当然,一般情况下,我们也用不到这些语言。
常用函数
除了上述介绍的fake.name()
和fake.address()
生成姓名和地址的两个函数外,还用很多生成其他信息的方法。
人物信息相关
name():随机生成全名
name_female():男性全名
name_male():女性全名
first_name_female():女性名
first_name_male():男性名
last_name_female():女姓
last_name_male():男姓
ssn():生成身份证号
phone_number():随机生成手机号
地理信息类
fake.country():国家
fake.country_code():国家编码
fake.province():省份
fake.city_suffix():市,县
fake.district():区
fake.street_address():街道地址
fake.street_suffix():街、路
fake.address():详细地址
fake.geo_coordinate():地理坐标
fake.latitude():地理坐标(纬度)
fake.longitude():地理坐标(经度)
fake.postcode():邮编
公司相关
bs():公司服务名
company():公司名
company_prefix():公司名前缀
company_suffix():公司性质
网络信息相关
ascii_company_email():ASCII公司邮箱
ascii_email():ASCII邮箱
company_email():公司邮箱
email():邮箱
safe_email():安全邮箱
domain_name():域名
domain_word():二级域名
ipv4():IPV4地址
ipv6():IPV6地址
mac_address():随机MAC地址
tld():网址域名后缀(.com,.net.cn,等等,不包括.)
uri():随机URI地址
uri_extension():网址文件后缀
uri_page():网址文件(不包含后缀)
uri_path():网址文件路径(不包含文件名)
url():随机URL地址
user_name():随机用户名
image_url():随机URL地址
文本、加密信息类
pystr():字符串
random_element():字母
random_letter():字母
paragraph():单个段落
paragraphs():多个段落
sentence():单个句子
sentences():多个句子
text():文章
word():词语
words():多个词语
编码相关
binary():二进制编码
md5():MD5
password():密码
sha1():SHA1
sha256():SHA256
uuid4():UUID
还有很多很多,不一一列举了,目前Faker支持304种数据,可以用dir(fake)查看Faker库都支持哪些数据的生成。
自定义Faker数据类型
Faker还支持创建自定义的Provider生成数据,如果在Faker库支持的数据类型都不是我们想要的,我们就可以自定义了。
from faker import Faker
from faker.providers import BaseProvider
# 创建自定义Provider
class MyProvider(BaseProvider):
def my_data_type(self):
return 'my_data_type'
# 添加Provider
fake = Faker()
fake.add_provider(MyProvider)
print(fake.my_data_type())
总结
上面说到的只是一些常见的数据,Faker库可以生成的数据远不止这些,此外,Faker库的源码也是非常值得研究和学习的,感兴趣的小伙伴可以了解一下啦。
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !