Python 生成测试数据 - faker 模块
摘自:http://notes.zhengxinonly.com/posts/2023-09-04.html
Faker 是一个生成数据的 Python 库,Faker 数据通常用于生成测试数据。
初始化操作
首先需要安装 faker 模块
faker.Faker() 创建并初始化一个伪造的生成器,该伪造器可以通过访问以数据类型命名的属性来生成数据。
Faker 将数据生成委托给提供者。默认提供程序使用英语语言环境,实例化对象是传入 zh-CN 的参数就可以生成中文数据了。
| >>> from faker import Faker |
| >>> faker = Faker('zh-CN') |
| >>> faker.name() |
| '凌斌' |
| >>> faker.address() |
| '福建省晶县沈河胡街y座 456451' |
| >>> faker.text() |
| '您的详细朋友建设的是商品.这么规定继续美国.\n事情品牌图片一次开发.游戏世界出现根据大学单位两个.\n这里下载精华起来一切你的.不会留言生活方法注册男人有关男人.\n结果能够觉得已经.人民次数出来他们准备.\n学校图片然后正在.今年公司科技.关系的人查看软件他的目前.\n生活发布法律只是历史教育.品牌提供全部而且品牌今天文化.\n关系重要虽然留言方法作者看到.包括资源语言精华.' |
生成个人信息
| >>> faker.first_name() |
| '建国' |
| >>> faker.last_name() |
| '段' |
| >>> faker.name_male() |
| '姜帅' |
| >>> faker.name_female() |
| '吕颖' |
| >>> faker.simple_profile() |
| {'username': 'dsun', 'name': '徐慧', 'sex': 'F', 'address': '西藏自治区宜都县花溪张路j座 199106', 'mail': 'weizheng@gmail.com', 'birthdate': datetime.date(1979, 4, 23)} |
| >>> faker.simple_profile('M') |
| {'username': 'vluo', 'name': '徐建平', 'sex': 'M', 'address': '安徽省慧市璧山佛山路S座 507175', 'mail': 'pwang@hotmail.com', 'birthdate': dat |
| etime.date(1935, 2, 13)} |
| >>> faker.profile(sex='F') |
| {'job': '美发店长', 'company': '凌云信息有限公司', 'ssn': '220524197612218387', 'residence': '山西省明市崇文杨路h座 343802', 'current_location': (Decimal('28.6007725'), Decimal('-54.516287')), 'blood_group': 'B-', 'website': ['http://42.cn/', 'https://yongtao.com/', 'http://fanggang.com/'], 'username': 'jiedeng', 'name': '万亮', 'sex': 'F', 'address': '云南省长沙市朝阳辽阳路H座 563507', 'mail': 'wei00@hotmail.com', 'birthdate': datetime.date(2003, 10, 22)} |
工作信息
| >>> faker.job() |
| '餐饮服务员' |
| >>> faker.address() |
| '香港特别行政区兴安盟县平山王路T座 842650' |
互联网相关数据
| >>> faker.email() |
| 'nalai@example.org' |
| >>> faker.safe_email() |
| 'qiang33@example.org' |
| >>> faker.free_email() |
| 'qiang55@yahoo.com' |
| >>> faker.company_email() |
| 'xuexia@dai.cn' |
| |
| >>> faker.domain_name() |
| 'changsu.cn' |
| >>> faker.domain_word() |
| 'changsu' |
| >>> faker.tld() |
| 'cn' |
| |
| >>> faker.ipv4() |
| '157.189.59.13' |
| >>> faker.ipv6() |
| 'c1c2:3782:ee5a:336:8b44:b463:411:f7a6' |
| >>> faker.mac_address() |
| 'd6:ca:7d:97:d4:30' |
| >>> faker.image_url() |
| 'https://placekitten.com/985/464' |
日期和时间
| >>> faker.date_of_birth() |
| datetime.date(1918, 11, 6) |
| >>> faker.century() |
| 'XIII' |
| >>> faker.year() |
| '2022' |
| >>> faker.month() |
| '11' |
| >>> faker.month_name() |
| '四月' |
| >>> faker.day_of_week() |
| '星期二' |
| >>> faker.day_of_month() |
| '12' |
| >>> faker.timezone() |
| 'Africa/Douala' |
| >>> faker.am_pm() |
| 'AM' |
生成日期时,还可以限定范围
| >>> from datetime import datetime |
| >>> datetime.now() |
| datetime.datetime(2023, 9, 5, 4, 34, 5, 528030) |
| >>> faker.date_time_this_century() |
| datetime.datetime(2013, 1, 31, 3, 39, 28) |
| >>> faker.date_time_this_decade() |
| datetime.datetime(2021, 6, 8, 6, 56, 26) |
| >>> faker.date_time_this_year() |
| datetime.datetime(2023, 2, 24, 21, 15, 10) |
| >>> faker.date_time_this_month() |
| datetime.datetime(2023, 9, 1, 5, 43, 1) |
| |
| >>> faker.date_this_century() |
| datetime.date(2009, 4, 20) |
| >>> faker.date_this_decade() |
| datetime.date(2022, 12, 27) |
| >>> faker.date_this_year() |
| datetime.date(2023, 3, 21) |
| >>> faker.date_this_month() |
| datetime.date(2023, 9, 4) |
还可以生成用于各种日期时间格式,获取选定范围的日期时间值以及生成未来或过去值的方法。
| >>> faker.unix_time() |
| 1445442052 |
| >>> faker.date_time() |
| datetime.datetime(1992, 10, 19, 10, 24, 7) |
| >>> faker.iso8601() |
| '1977-09-09T18:27:14' |
| >>> faker.date() |
| '2000-11-12' |
| >>> faker.time() |
| '05:13:29' |
| |
| >>> faker.date_time_between(start_date='-15y', end_date='now') |
| datetime.datetime(2017, 8, 9, 11, 31, 52) |
| >>> faker.date_between() |
| datetime.date(2009, 1, 3) |
| |
| >>> faker.future_datetime() |
| datetime.datetime(2023, 9, 6, 16, 35, 44) |
| >>> faker.future_date() |
| datetime.date(2023, 10, 2) |
| >>> faker.past_datetime() |
| datetime.datetime(2023, 8, 15, 5, 6, 35) |
| >>> faker.past_date() |
| datetime.date(2023, 8, 30) |
其他信息
哈希值
| >>> faker.md5() |
| '46572a2c48ef9e500ca35b2cd780c058' |
| >>> faker.sha1() |
| '41f80ea542e804feb1749e843375c32e1203ccf0' |
| >>> faker.sha256() |
| '7edda6146045816052b53e035c020241cbe426f2b4f6ef8031ec7fe7ea481f18' |
| >>> faker.uuid4() |
| 'c7dee7c4-779b-4e7d-a3f1-ff5b3df8a434' |
货币信息
| >>> faker.currency() |
| ('NZD', 'New Zealand dollar') |
| >>> faker.currency_name() |
| 'Zealand dollar' |
| >>> faker.currency_code() |
| 'NZD' |
生成单词
| >>> faker.word() |
| '孩子' |
| >>> faker.words(6) |
| ['类别', '直接', '为什', '如此', '说明', '要求'] |
生成数字
| >>> faker.random_int() |
| 2477 |
| >>> faker.random_int(0, 100) |
| 58 |
| >>> faker.random_digit() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了