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

发布时间:2026/9/12 14:04:33

影刀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/9/11 18:22:00

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

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

2026/9/6 15:10:48

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

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

2026/9/12 9:15:54

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

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

2026/9/12 14:00:38

MicroPython块设备实战:SPI Flash挂载FAT文件系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 14:00:38

告别EasyExcel:基于Apache POI的Excel底层解析实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 14:00:38

源码快照评估法:GPU加速机器学习库cuML选型实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 14:00:38

Excel与Word数据批量同步的VBA自动化方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 13:55:37

电子元器件视觉质检:YOLO系列选型与大模型协同落地实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码