发布时间: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)要解决的核心问题是:在没有外部奖励信号的情况下,如何让多个智能体通…

2026/7/26 1:24:06

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

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

2026/7/26 1:24:06

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

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

2026/7/26 2:39:12

AI工具如何提升本科开题报告写作效率

1. 本科开题报告写作痛点解析每年毕业季,数以百万计的本科生都会面临开题报告这个"拦路虎"。作为学术研究的起点,开题报告需要明确研究背景、选题意义、文献综述、研究方法和技术路线等核心要素。传统写作方式往往让学生陷入以下困境&#xff…

2026/7/26 2:39:12

Anthropic Harness:AI安全评估开源框架解析与应用

1. 项目概述:Anthropic Harness的发布背景与核心价值 今天凌晨刷GitHub Trending时突然发现Anthropic官方仓库多了一个叫Harness的新项目,作为长期关注AI安全研究的从业者,我立刻意识到这可能是继Claude模型之后又一个重要工具链的发布。果然…

2026/7/26 2:39:12

《现代AI基础》全套PPT课件2026版

《现代AI基础》全套PPT课件2026版 课件参考:现代AI基础 余久久 教材 课件内容: 第1章人工智能概述.pptx 第2章 Python编程语言初探.ppt 第3章数据挖掘基础.ppt 第4章初识机器学习.ppt 第5章 神经网络起源.ppt 第6章经典人工智能算法简介.ppt 第7章我国…

2026/7/26 2:39:12

DeepMind三大AI技术突破:NeuroGraph、AlphaZeta与Phoenix解析

1. 项目概述ICML(国际机器学习大会)作为机器学习领域的顶级学术会议,每年都会吸引全球顶尖研究机构展示最新突破性成果。今年Google DeepMind在ICML 2024上的技术展示,再次证明了其在人工智能基础研究领域的领导地位。作为长期跟踪…

2026/7/26 2:39:12

《黄帝内经》021章|津凝精晶 沉降为患

摘要:本文深入解读《黄帝内经》中“阳气者,精则养神,柔则养筋”至“发为风疟”一段经文。首先梳理传统主流医理,阐释阳气失常、寒邪入侵导致“大偻”、“瘘”、“善畏惊骇”、“痈肿”、“风疟”等病症的机制。进而,作…

2026/7/26 2:34:12

Ubuntu 20.04下X11VNC远程桌面配置与优化指南

1. 项目概述:X11VNC在Ubuntu桌面环境的应用价值在Linux系统管理中,远程桌面访问一直是刚需场景。不同于Windows的RDP协议,Linux生态中X11显示系统的远程访问方案更为多样化。X11VNC作为老牌VNC服务端实现,在Ubuntu 20.04 LTS桌面环…

2026/7/26 0:03:36

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

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

2026/7/26 0:03:36

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

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

2026/7/25 0:59:36

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…