影刀RPA进阶教程自动化流程的测试与验证方法写流程很快跑通一次也很轻松。但跑通一次和可靠运行之间隔着测试。我也是踩了无数次坑才意识到自动化流程也是代码代码就需要测试。不是我手动跑一遍看看没问题就行那叫验收不叫测试。这篇文章讲自动化流程怎么测、测什么、分几层测。一、自动化流程的测试难点自动化流程和普通代码测试不一样的地方在于依赖外部环境网页改版、网络中断、登录态过期都会导致流程失败状态不可控你没法保证每次运行时页面状态一模一样——弹窗有没有、数据有没有变化测试成本高跑一次完整流程可能要十几分钟不像单元测试几毫秒就出结果所以自动化流程的测试策略要务实——不可能做到 100% 覆盖但要覆盖住一旦出错就会影响大量数据的关键节点。拼多多店群自动化上架方案二、两层测试体系我把流程测试分成两层层级测什么什么时候测单指令测试元素定位对不对、变量值对不对开发阶段随时测| 集成测试 | 整个流程从头到尾能不能跑通 | 每次改完关键逻辑后 |2.1 单指令测试断点 变量面板影刀的断点调试器是最直接的单指令测试工具。标准操作在想测试的指令前面双击打上断点蓝色圆点点运行流程跑到断点处暂停看右侧变量面板检查当前所有变量的值按 F10 单步执行一条指令一条指令地走每一步确认元素是不是点对了、值是不是你预期的重点检查这些检查项怎么看常见问题元素定位看流程有没有报找不到元素XPath 写太死换个页面就不匹配了变量值变量面板里看实际值变量名写错了、赋值没生效分支走向看流程有没有进否则分支判断条件写反了循环次数看变量面板里的计数器多循环一次或少循环一次2.2 集成测试准备测试数据集# 测试用的配置变量不要和正式数据混在一起测试模式True如果 测试模式:Excel路径D:\测试数据\商品列表_测试.xlsx# 只有3条数据延迟系数0.5# 测试时等待减半跑快点否则:Excel路径D:\正式数据\商品列表.xlsx# 正式数据延迟系数1.0测试数据的黄金法则测试集至少包含这些边界情况——正常数据占大多数空数据某个字段为空异常数据特殊字符、超长文本、负数边界数据最大数量、最后一页三、断言机制——让流程自己检查自己影刀没有内置的断言指令但可以自己模拟。# 自定义断言检查变量值是否符合预期Python代码:defassert_eq(actual,expected,message):ifactual!expected:raiseException(f断言失败: 期望{expected}, 实际{actual}。{message})# 在关键检查点使用assert_eq(变量_登录状态,True,登录失败流程不应继续)assert_eq(变量_数据行数0,True,采集结果为空)在流程的关键节点插入断言# 打开登录页面打开网页(https://seller.taobao.com)# 断言1页面加载成功判断元素是否存在(登录页标题)-页面加载成功 断言(页面加载成功,登录页未加载)# 执行登录输入文本(账号输入框,账号)输入文本(密码输入框,密码)点击元素(登录按钮)等待(3秒)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ad758697dd4040bfa10bab0c08dfc477.png#pic_center)# 断言2登录成功判断元素是否存在(首页Logo)-登录成功 断言(登录成功,登录失败账号或密码错误)# 断言3导航到目标页面点击元素(商品管理菜单)等待元素出现(商品列表,5秒)判断元素是否存在(商品列表)-导航成功 断言(导航成功,导航到商品管理页面失败)四、数据完整性验证TEMU店群如何管理运营采集完数据后不是看起来差不多就行了。要做数据校验。# 数据完整性检查Python代码:importpandasaspd dfpd.read_excel(rD:\采集结果.xlsx)# 检查1空值比例null_pctdf[价格].isnull().mean()ifnull_pct0.1:print(f警告价格字段空值比例{null_pct*100:.1f}%)# 检查2数据行数是否合理iflen(df)预期行数*0.8:print(f警告实际采集{len(df)}条远低于预期{预期行数}条)# 检查3数值范围ifdf[价格].min()0:print(警告存在负价格数据异常)ifdf[价格].max()100000:print(警告存在异常高价商品)# 检查4关键字段去重duplicatesdf[商品ID].duplicated().sum()ifduplicates0:print(f警告存在{duplicates}条重复商品ID)五、回归测试——改完代码别引入新 Bug最常见的翻车场景你修改了一个小地方结果把另一个地方的逻辑搞崩了。回归测试的实操方案保持一个已验证通过的版本的快照每次修改后用同一份测试数据跑一遍对比两次运行的结果文件# 用 Python 对比两次结果Python代码:importpandasaspd oldpd.read_excel(rD:\基准结果.xlsx)newpd.read_excel(rD:\最新结果.xlsx)# 行数变化超过5% → 可能有问题row_diffabs(len(new)-len(old))/len(old)ifrow_diff0.05:print(f行数变化{row_diff*100:.1f}%需要检查)# 列名有没有变化![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e3997e18b1bf45d59a15cff67d77aaec.png#pic_center)ifset(old.columns)!set(new.columns):print(f列名不一致旧版:{list(old.columns)}, 新版:{list(new.columns)})# 关键列的统计值forcolin[价格,销量]:ifcolinold.columnsandcolinnew.columns:old_meanold[col].astype(float).mean()new_meannew[col].astype(float).mean()diffabs(new_mean-old_mean)/max(old_mean,1)ifdiff0.2:print(f列{col}均值变化{diff*100:.1f}%需检查)六、测试检查清单手机端收藏每改完一个流程按这个清单跑一遍#检查项怎么测1正常流程能跑通用正常数据从头跑到尾2网络断了能退出手动断网看流程是报错还是卡死3登录态过期能处理清掉Cookie再跑4弹窗出现不卡死模拟有弹窗和无弹窗两种场景5空数据不报错用空Excel/空列表跑一遍6翻页到最后一页能停止数据量设小点翻到最后一页7异常数据不崩Excel里混入几条空行/特殊字符8结果数据格式正确看输出的Excel列名、数值类型对不对作者林焱本文为《影刀RPA学习手册》系列文章之一内容源于实操经验的整理与分享。