
Vanessa Automation异步步骤与等待机制完整揭秘告别测试用例不稳定的终极方案【免费下载链接】vanessa-automationBDD в 1С项目地址: https://gitcode.com/gh_mirrors/va/vanessa-automation如果你在用Vanessa Automation面向 1C 平台的 BDD 行为驱动测试框架跑自动化测试多半被“时灵时不灵”的用例折磨过。本文用最少的心智负担讲清楚 Vanessa Automation 里异步步骤与等待机制的内幕哪些步骤天生是异步的、5 秒的等待为什么变成 10 秒、以及如何在 CI 环境中一键调稳你的测试套件。一、为什么测试会“不稳定”1C 的客户端界面存在一个天然问题服务端调用是异步的。你点击“Провести过账”按钮后窗口状态并不是瞬间更新的——期间可能有报表计算、校验、事件处理器在后台排队执行。如果你的测试“点完立刻断言”就会撞上三种典型翻车现场断言时窗口还没打开 → 报“未找到窗口”字段值还没回写 → 断言拿到旧值表单同步状态时把你刚输入的值擦了→ 数据莫名其妙变回默认值Vanessa Automation 的解法不是让你到处加sleep而是内置了一整套异步等待与重试机制。二、什么是“异步步骤”在 Vanessa Automation 的术语里异步步骤 会在若干秒内等待某个事件出现的步骤。最典型的例子就是Тогда открылось окно此时打开了窗口…它不是一次性检查窗口是否存在而是持续轮询直到窗口出现或超时。类似的还有各类“等待…”检查步骤——它们都带一个“в течение N секундN 秒内”的参数。5 秒的显式超时为什么 10 秒才报错这是新手最常踩的疑惑步骤里明明写了“在 5 秒内等待”错误却 10 秒后才抛出。内幕其实是一行简单的取大逻辑实际超时 max(全局“异步步骤超时”设置, 步骤参数里传的秒数)全局设置默认就是10 秒所以你传的 5 秒会被全局值“兜底”放大到 10 秒。官方文档对这一行为有专门答疑见docs/MainHelp/1.2.043.1/Глава16/ПочемуАсинхронныйШагСЯвнымТаймаутом.MD 这意味着想让测试快速失败必须同时调小全局超时想让测试更耐等只需调大全局值所有异步步骤一起受益。三、稳定性核心阵地服务页“场景执行 → 测试执行稳定化”所有影响稳定性的开关集中在一处服务 标签页 → 场景执行 → 测试执行稳定化。对应的官方教程文档在docs/MainHelp/1.2.043.1/Глава02/ЗакладкаСервисВыполнениеСценариевСтабилизацияВыполненияТестов.MD这里有 6 个关键字段逐一拆解1. 场景重试次数默认 1。设为 2 或 3 后场景失败会自动重跑是 CI 里对抗偶发失败的“第一道保险”。2. 自动关闭文本覆盖1C 在表单状态同步后可能把用户正在编辑的字段文本还原测试里就表现为“明明输入了值却回去了”。该开关会在“Тогда открылось окно”后自动关闭字段的“文本编辑更新”属性。⚠️ 生效前提是测试客户端库中安装了 VAExtension 扩展源码见lib/VAExtension/。3. 动作重试次数针对“给字段赋值、点按钮”这类简单动作失败后隔 1 秒自动重试。官方明确建议在 CI 环境调高此值减少假失败。4. 等待新窗口出现的秒数控制“窗口打开”类异步步骤的基础等待时间CI 慢机器上建议加大。5. 异步步骤超时就是第二节讲的全局超时所有异步等待步骤的“兜底值”。CI 环境同样建议调高。6. 动作时长上限防挂死为单个原子动作设一个“死亡线”超时直接抛异常。默认 0 不检查。它能防止测试客户端卡死导致整个流水线无限挂起——建议 CI 设一个保守值如 60 秒。 延伸阅读什么时候才该用“ПаузаPause”官方给了明确指引别把固定等待当万金油docs/MainHelp/1.2.043.1/Глава08/КогдаНадоИспользоватьПаузу.MD四、进阶自己动手写“异步等待”步骤当内置步骤不够用时例如“等待某张后台报表生成完”可以借助 Vanessa-Behavior 步骤编程框架的等待处理器机制实现真正的条件等待而非固定睡眠。核心套路四步完整可运行的示例见features/StepsProgramming/Док-АсинхронноеВыполнениеШага.feature步骤代码里调用Ванесса.ЗапретитьВыполнениеШагов()——冻结后续步骤执行用ПодключитьОбработчикОжидания(处理器名, 1)挂一个每 1 秒触发的轮询处理器处理器里检查业务条件如“文档已过账”满足则调用ОтключитьОбработчикОжидания()解除轮询调用Ванесса.ПродолжитьВыполнениеШагов()—— 解冻测试继续这个模式的价值在于等待时长完全由业务状态决定环境快就秒过环境慢就多等从根源上消除“等 2 秒有时不够、等 10 秒又拖慢套件”的矛盾。在“已知步骤”树里勾选显示服务步骤你可以看到平台内置的各类服务机制包括执行内置语言代码的步骤它们都是编写自定义异步步骤的基石五、CI 环境调优清单照抄即可设置项本地开发CI 建议场景重试次数12~3动作重试次数12~3等待新窗口的秒数默认适当加大异步步骤超时默认 10 秒适当加大动作时长上限0不检查设为 60 秒左右原则就一句话CI 越慢等待越宽同时用“动作时长上限”兜住最坏情况。总结异步步骤 带轮询等待的步骤实际超时 max(全局设置, 步骤参数)稳定性调优集中在服务 → 场景执行 → 测试执行稳定化面板自定义异步等待用ЗапретитьВыполнениеШагов ПодключитьОбработчикОжидания组合拳CI 环境加大超时、加重试、设死亡线三板斧齐下彻底告别 flaky掌握这套机制后你的 Vanessa Automation 测试套件将从“玄学”变成“确定性工程”。【免费下载链接】vanessa-automationBDD в 1С项目地址: https://gitcode.com/gh_mirrors/va/vanessa-automation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考