影刀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快几十倍

相关新闻

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

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

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

2026/10/14 6:05:22 阅读更多 →
AI论文写作工具PaperXie:从选题到格式的全流程辅助

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

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

2026/10/9 1:50:00 阅读更多 →
影刀RPA 长流程的模块化拆分原则与实战

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

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

2026/10/7 10:10:12 阅读更多 →

最新新闻

一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

1. 从一条氨基酸序列反推蛋白身份:这条肽的“户口本”是这样查的拿到 PDGF A-Chain (194-211) 这个编号,加上后面那一串 GRPREGSKKRKRKRLKPT,我的第一反应不是急着做实验,而是先把它当成一个“嫌疑人”来审:它到底来自…

2026/10/14 6:04:23 阅读更多 →
Spring Boot微服务架构设计与实战指南

Spring Boot微服务架构设计与实战指南

1. 为什么Spring Boot成为微服务首选框架十年前我刚接触企业级应用开发时,EJB的复杂配置让人望而生畏。直到Spring Boot出现,用约定优于配置的理念彻底改变了Java开发方式。现在回想第一次用Spring Boot启动项目的场景:没有XML配置&#xff0…

2026/10/14 6:04:23 阅读更多 →
bl knowledge search 报 400 RagAgentGroupNotExist 怎么解决?阿里云百炼知识库检索与 agent 记忆节点使用步骤与常见报错排查

bl knowledge search 报 400 RagAgentGroupNotExist 怎么解决?阿里云百炼知识库检索与 agent 记忆节点使用步骤与常见报错排查

给 agent 补知识,阿里云百炼的 CLI(bl)里有两条路:bl knowledge 建知识库、包一层检索服务让它查;bl memory 按用户记节点。两条路的 ID 体系不一样,混用会撞上一个措辞很像服务端故障的 HTTP 400。 这篇按…

2026/10/14 6:04:23 阅读更多 →
微电网群协同调度中的目标级联法原理与Matlab实现

微电网群协同调度中的目标级联法原理与Matlab实现

1. 项目背景与核心价值微电网群协同调度是当前分布式能源领域的热点研究方向。传统集中式优化方法在面对多主体、高维度的微网群系统时,往往面临通信压力大、隐私保护难、计算复杂度高等问题。目标级联法(Analytical Target Cascading, ATC)通…

2026/10/14 6:04:23 阅读更多 →
汽车线束开发中的BOM图纸与检验记录管理

汽车线束开发中的BOM图纸与检验记录管理

汽车线束从设计到样品、再到量产,BOM材料清单、图纸和检验记录需要保持关联。连接器替换或支路调整后,如果相关文件没有同步更新,资料评审就可能遗漏要求。建立清晰的版本和关联关系,有助于工程与采购对齐信息。首先,为…

2026/10/14 6:04:23 阅读更多 →
PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

接手的这台“AnyPS5”时,我第一反应是:这名字起得挺大。光是PS5相关的外设、存储、网络、串流、保养,随便列一列就够写好几篇长文。后来想明白了,所谓“Any PS5”,并不是什么第三方工具或改装固件,而是玩家…

2026/10/14 6:03:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →