影刀RPA 随机数与模拟数据生成:测试数据准备

发布时间:2026/7/26 1:24:06

影刀RPA 随机数与模拟数据生成:测试数据准备
影刀RPA 随机数与模拟数据生成测试数据准备作者林焱开发RPA流程时经常需要测试数据来验证流程是否正常——测试表单填写需要随机姓名和手机号、测试数据处理需要随机数量的数据行、测试文件操作需要随机文件名。手动造数据太慢这篇文章讲清楚怎么用Python快速生成各种模拟测试数据。一、什么情况用什么场景推荐方法说明生成随机数random模块基础随机数生成随机姓名预设姓氏随机组合中文姓名生成随机手机号号段随机数字11位手机号生成随机日期randomdatetime日期范围内随机生成随机选择random.choice从列表随机选生成随机字符串stringrandom指定长度的字符串批量生成测试数据Faker库一行代码生成完整假数据生成随机文件写入随机内容测试文件操作生成随机Excelopenpyxl随机数据测试数据处理二、怎么做2.1 基础随机数拼多多店群自动化报活动上架importrandom# 设置随机种子可重复random.seed(42)# 随机整数print(random.randint(1,100))# 1-100之间的整数print(random.randrange(0,100,5))# 0-100之间5的倍数# 随机小数print(random.random())# 0.0-1.0之间print(random.uniform(10.5,99.9))# 指定范围的小数# 从序列中随机选择colors[红,黄,蓝,绿,黑,白]![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f3fed98e5d134737a3af379d01497277.png#pic_center)print(random.choice(colors))# 随机选择多个可重复print(random.choices(colors,k3))# 随机选择多个不重复print(random.sample(colors,3))# 打乱列表顺序numslist(range(1,11))random.shuffle(nums)print(nums)2.2 生成随机中文姓名importrandom# 常见姓氏surnameslist(赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平)# 名字用字name_charslist(伟芳娜秀英敏静丽磊强洋勇艳杰娟涛明超秀峰平刚桂英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼斌能睿诚晓明晨辰帆辉杰天浩宇轩博思远)defgenerate_name():生成随机中文姓名surnamerandom.choice(surnames)# 名字1-2个字name_lengthrandom.choice([1,1,2])# 单字名概率更高given_name.join(random.choices(name_chars,kname_length))returnsurnamegiven_name# 生成10个姓名for_inrange(10):print(generate_name())2.3 生成随机手机号importrandom# 手机号段phone_prefixes[130,131,132,133,134,135,136,137,138,139,150,151,152,153,155,156,157,158,159,170,176,177,178,180,181,182,183,184,185,186,187,188,189,191,198,199]defgenerate_phone():生成随机手机号prefixrandom.choice(phone_prefixes)suffix.join(random.choices(0123456789,k8))returnprefixsuffix# 生成10个手机号for_inrange(10):print(generate_phone())2.4 生成随机邮箱和地址importrandomimportstringdefgenerate_email():生成随机邮箱username.join(random.choices(string.ascii_lowercasestring.digits,krandom.randint(6,12)))domains[qq.com,163.com,gmail.com,outlook.com,126.com,sina.com]domainrandom.choice(domains)returnf{username}{domain}defgenerate_address():生成随机地址provinces[北京市,上海市,广东省,浙江省,江苏省,四川省,湖北省,湖南省]cities[朝阳区,海淀区,浦东新区,天河区,西湖区,武侯区,江汉区,岳麓区]streets[人民路,解放路,建设路,中山路,和平路,文化路,科技路,创新大道]provincerandom.choice(provinces)cityrandom.choice(cities)streetrandom.choice(streets)numberrandom.randint(1,200)buildingrandom.randint(1,30)roomrandom.randint(101,2505)returnf{province}{city}{street}{number}号{building}栋{room}室for_inrange(5):print(f邮箱:{generate_email()})print(f地址:{generate_address()})print()2.5 生成随机日期importrandomfromdatetimeimportdatetime,timedeltadefgenerate_date(start_date,end_date):在指定范围内生成随机日期deltaend_date-start_date random_daysrandom.randint(0,delta.days)returnstart_datetimedelta(daysrandom_days)defgenerate_datetime(start_date,end_date):在指定范围内生成随机日期时间deltaend_date-start_date random_secondsrandom.randint(0,int(delta.total_seconds()))returnstart_datetimedelta(secondsrandom_seconds)# 2025年1月1日 到 2026年7月1日 之间的随机日期startdatetime(2025,1,1)enddatetime(2026,7,1)for_inrange(5):dtgenerate_datetime(start,end)print(dt.strftime(%Y-%m-%d %H:%M:%S))2.6 生成随机字符串importrandomimportstringdefgenerate_random_string(length,charsetNone):生成随机字符串ifcharsetisNone:charsetstring.ascii_lettersstring.digitsreturn.join(random.choices(charset,klength))# 各种随机字符串print(generate_random_string(8))# aB3xK9mNprint(generate_random_string(6,string.digits))# 385921print(generate_random_string(4,string.ascii_uppercase))# XKQMprint(generate_random_string(32,string.hexdigits.lower()))# a3f8b2c1...print(generate_random_string(10,一二三四五六七八九十))# 三七八二...# 生成UUID更规范的唯一IDimportuuidprint(str(uuid.uuid4()))# 550e8400-e29b-41d4-a716-4466554400002.7 批量生成测试数据到Excelimportrandomimportopenpyxlfromdatetimeimportdatetime,timedeltadefgenerate_test_excel(num_rows,output_path):生成测试数据Excel# 准备随机数据池surnameslist(赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨)name_charslist(伟芳娜秀英敏静丽磊强洋勇艳杰娟涛明超)departments[销售部,技术部,市场部,人事部,财务部,运营部]positions[专员,主管,经理,总监,实习生]cities[北京,上海,广州,深圳,杭州,成都,武汉]phone_prefixes[138,139,150,151,186,187,188]# 生成数据data[]start_datedatetime(2020,1,1)end_datedatetime(2026,6,30)foriinrange(1,num_rows1):namerandom.choice(surnames).join(random.choices(name_chars,krandom.choice([1,2])))departmentrandom.choice(departments)positionrandom.choice(positions)phonerandom.choice(phone_prefixes).join(random.choices(0123456789,k8))emailfuser{i}example.comcityrandom.choice(cities)salaryrandom.randint(5000,50000)hire_dategenerate_date(start_date,end_date)data.append([i,name,department,position,phone,email,city,salary,hire_date.strftime(%Y-%m-%d)])# 写入Excelwbopenpyxl.Workbook()wswb.active ws.title员工数据headers[ID,姓名,部门,职位,手机号,邮箱,城市,月薪,入职日期]ws.append(headers)# 表头加粗forcellinws[1]:cell.fontopenpyxl.styles.Font(boldTrue)forrowindata:ws.append(row)# 自适应列宽forcolinws.columns:max_lenmax(len(str(cell.valueor))forcellincol)ws.column_dimensions[col[0].column_letter].widthmin(max_len4,25)wb.save(output_path)print(f生成{num_rows}条测试数据 →{output_path})returnoutput_pathdefgenerate_date(start,end):fromdatetimeimporttimedelta deltaend-startreturnstarttimedelta(daysrandom.randint(0,delta.days))# 生成100条测试数据# generate_test_excel(100, rD:\test_data\employees.xlsx)2.8 使用Faker库高级Faker是专门生成假数据的库支持中文# 安装pip install fakerfromfakerimportFaker# 创建中文假数据生成器fakeFaker(zh_CN)# 生成各种假数据print(f姓名:{fake.name()})print(f手机号:{fake.phone_number()})print(f邮箱:{fake.email()})print(f地址:{fake.address()})print(f公司:{fake.company()})print(f职位:{fake.job()})print(f日期:{fake.date_between(start_date-5y).strftime(%Y-%m-%d)})print(f身份证:{fake.ssn()})print(f银行卡:{fake.credit_card_number()})print(fIP地址:{fake.ipv4()})print(fURL:{fake.url()})print(f文本:{fake.text(max_nb_chars50)})# 批量生成print(\n 批量生成 )for_inrange(5):print(f{fake.name()}|{fake.phone_number()}|{fake.company()})三、有什么坑坑1随机数不随机没设种子导致无法复现TEMU店群矩阵自动化运营核价报活动importrandom# 不设种子每次运行结果不同正常print(random.randint(1,100))# 每次不同# 设种子每次运行结果相同用于测试复现random.seed(42)print(random.randint(1,100))# 每次都是同一个数测试时设种子可以复现问题生产环境不要设种子。坑2生成的手机号不合法importrandom# 错误完全随机11位数字phone.join(random.choices(0123456789,k11))# 可能生成 01234567890第一位是0不合法# 正确用真实号段prefixes[130,131,138,150,186,188,199]phonerandom.choice(prefixes).join(random.choices(0123456789,k8))坑3随机日期超出范围importrandomfromdatetimeimportdatetime,timedelta startdatetime(2026,1,1)enddatetime(2026,12,31)# 错误可能生成2月31日# month random.randint(1, 12)# day random.randint(1, 31)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ddb5bae070a443558fbc345665f08613.png#pic_center)# date datetime(2026, month, day) # 2月31日报错# 正确用timedeltadeltaend-start random_datestarttimedelta(daysrandom.randint(0,delta.days))print(random_date.strftime(%Y-%m-%d))坑4Faker生成的地址不真实Faker生成的地址是随机拼接的不是真实地址。如果测试依赖真实地址数据如地理编码需要用真实数据集。坑5大批量生成数据太慢importrandomimporttime# 慢逐条生成starttime.time()data[]for_inrange(100000):data.append(random.randint(1,100))print(f逐条:{time.time()-start:.2f}秒)# 快批量生成starttime.time()data[random.randint(1,100)for_inrange(100000)]print(f列表推导式:{time.time()-start:.2f}秒)# 更快用numpyimportnumpyasnp starttime.time()datanp.random.randint(1,101,size100000)print(fnumpy:{time.time()-start:.2f}秒)总结模拟数据生成的核心要点基础数据用random模块——随机数、选择、打乱中文数据自己造池——姓氏、名字、号段等预设列表批量数据用Faker——一行代码生成完整的假人信息测试复现设种子——random.seed(42)让结果可复现大批量用numpy——比random快几十倍

相关新闻

无监督多智能体强化学习理论与工程实践

无监督多智能体强化学习理论与工程实践

2026/7/26 1:24:06

1. 无监督多智能体强化学习的前沿探索2025年NIPS会议这篇论文的标题直接指向了强化学习领域最具挑战性的方向之一。无监督多智能体强化学习(Unsupervised MARL)要解决的核心问题是:在没有外部奖励信号的情况下,如何让多个智能体通…

AI论文写作工具PaperXie:从选题到格式的全流程辅助

AI论文写作工具PaperXie:从选题到格式的全流程辅助

2026/7/26 1:24:06

1. 项目概述本科毕业论文写作是每个大学生必须经历的重要学术考验。从选题开题到最终答辩,整个过程往往需要耗费数月时间,涉及文献检索、数据收集、论文撰写、格式调整等多个环节。传统写作模式下,学生容易陷入资料查找效率低下、写作思路不清…

影刀RPA 长流程的模块化拆分原则与实战

影刀RPA 长流程的模块化拆分原则与实战

2026/7/26 1:24:06

影刀RPA 长流程的模块化拆分原则与实战 作者:林焱 什么情况用这个 你打开一个三个月前写的流程,发现它有80个步骤、15个Python节点、嵌套了6层IF和3层循环。现在要改里面一个判断条件,你找了20分钟才找到那个IF块在哪。更可怕的是——改了之…

企业级助农管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

企业级助农管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

2026/7/26 2:04:08

博主介绍:🌟 个人简介 CSDN特邀作者 | 掘金优质创作者,深耕Java生态与现代Web开发技术栈。专业领域涵盖Java企业级开发、Spring Boot微服务架构、前后端分离解决方案,以及学术项目的工程化实践。 📊 影响力数据 全平台…

Python+RAG构建智能知识库系统实战

Python+RAG构建智能知识库系统实战

2026/7/26 2:04:08

1. 项目背景与核心价值最近在帮一家中型电商企业搭建内部知识管理系统时,深刻体会到传统文档共享平台的局限性——海量的产品手册、客服话术和运营规范分散在各个文件夹中,新员工要花两周时间才能熟悉基本业务流程。这促使我尝试用PythonRAG技术栈构建一…

MCP协议开发实战:构建英国央行数据查询的Claude AI工具

MCP协议开发实战:构建英国央行数据查询的Claude AI工具

2026/7/26 2:04:08

1. 项目背景与需求场景 最近在办理房屋再抵押贷款时,发现需要频繁查询英国央行(Bank of England)的利率数据。传统的手动查询方式效率低下,正好接触到Claude Code和MCP(Model Context Protocol)技术&#x…

Claude MCP协议实战:构建英国央行数据查询工具完整指南

Claude MCP协议实战:构建英国央行数据查询工具完整指南

2026/7/26 2:04:08

Claude与MCP协议实战:构建英国央行数据查询工具完整指南 在AI助手日益普及的今天,Claude作为一款强大的对话式AI,其扩展能力尤其值得开发者关注。最近在实际业务中尝试使用Claude处理房贷相关数据分析时,发现直接获取英国央行等权…

月之暗面Kimi API实战:长文本处理与OpenAI对比开发指南

月之暗面Kimi API实战:长文本处理与OpenAI对比开发指南

2026/7/26 2:04:07

最近科技圈有个很有意思的现象:马斯克在社交媒体上公开喊话中国AI公司,而月之暗面(Moonshot AI)的回应更是直接——“希望能出来‘掰掰手腕’”。这不仅仅是两家公司的隔空对话,背后反映的是全球AI竞争格局正在发生的深…

终极指南:如何用Translumo免费实现Windows游戏实时翻译

终极指南:如何用Translumo免费实现Windows游戏实时翻译

2026/7/26 1:54:07

终极指南:如何用Translumo免费实现Windows游戏实时翻译 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…