ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Robot Framework 任务执行完全指南:RPA 通用自动化模式与 --rpa/--norpa/--task 实战解析

Robot Framework 任务执行完全指南:RPA 通用自动化模式与 --rpa/--norpa/--task 实战解析 测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载本文聚焦 Robot Framework 的**任务执行Task Execution**机制从 Robot Framework 3.1 起框架不仅支持测试自动化还通过*** Tasks ***表格与「通用自动化模式」原生支持 RPARobotic Process Automation等任务型自动化。文章将系统讲解通用自动化模式的自动判定原理、--rpa/--norpa/--task命令行选项的用法与优先级、执行模式在output.xml中的存储与 Rebot 后处理流程并结合仓库源码与验收测试揭示冲突检测的底层实现。读完本文你将能在同一套 Robot Framework 中熟练编写、选择、执行任务型用例并正确处理测试/任务混合场景。任务执行与通用自动化模式概述Robot Framework 从诞生起就可以用于测试自动化之外的自动化场景但从 3.1 版本开始它才正式支持显式地创建并执行任务tasks。任务与测试在执行层面几乎完全相同都由关键字keyword构成、都组织在套件suite中、都支持 setup/teardown/template/timeout 等机制。真正的差异主要体现在两个层面数据语法任务写在*** Tasks ***表格中而非*** Test Cases ***表格术语体系在日志、报告、统计信息中任务使用task一词而非test。当执行入口robot命令、python -m robot或robot.run解析到被执行文件中包含的是任务而非测试时框架会自动进入通用自动化模式Generic automation mode。这一模式不会改变实际的执行逻辑但会改变所有产出物的措辞——例如日志标题从Test Log变为Task Log统计标题从Test Statistics变为Task Statistics控制台摘要中的tests也会替换为tasks。相关验收测试在 atest/robot/rpa/run_rpa_tasks.robot 中对output.xml、log.html、report.html及控制台输出逐一断言了这些措辞变化。任务的创建语法与任务专属设置要执行任务首先需要按任务语法创建数据。任务的数据语法与测试用例基本一致核心区别是使用*** Tasks ***表格详见 doc/userguide/src/CreatingTestData/CreatingTasks.rst*** Tasks *** Process invoice Read information from PDF Validate information Submit information to backend system Validate information is visible in web UI需要注意的规则同一文件禁止同时包含测试与任务这是硬性错误任务可以像测试一样组织进套件目录含__init__.robot形成多级套件结构在*** Settings ***设置表中可以使用Task Setup、Task Teardown、Task Template、Task Timeout替代对应的Test系设置它们在语义与用法上与Test Setup/Test Teardown/Test Template/Test Timeout完全一致只是作用对象变为任务单个任务内部同样支持[Tags]、[Setup]、[Teardown]、[Template]、[Timeout]、[Documentation]等用例级设置。仓库中的真实示例 atest/testdata/rpa/task_aliases.robot 完整展示了任务专属设置与用例级覆盖的写法包括Task Tags、Task Setup、Task Teardown、Task Template、Task Timeout以及通过[Setup]、[Template]、[Timeout]、[Teardown]在单条任务中覆盖全局设置的Override任务。此外还演示了设置名拼写错误时的推荐提示Tesk Setup会被提示为Test Setup/Task Setup这一点在验收测试 atest/robot/rpa/run_rpa_tasks.robot 中也有断言。控制执行模式--rpa 与 --norpa默认情况下执行模式是测试还是任务由数据文件中的表头自动判定。但某些场景下需要显式控制此时使用两个互斥的选项--rpa强制开启通用自动化模式。被执行的目录/文件中可以既有测试也有任务全部按任务口径执行与统计--norpa强制使用测试自动化模式即使被执行文件包含*** Tasks ***表头也按测试口径执行与统计。这两个选项的语义在 src/robot/run.py 的选项帮助文本中有明确定义Turn on the generic automation mode. Mainly affects terminology so that test is replaced with task in logs and reports. By default the mode is got from test/task header in data files.在命令行参数解析层面rpa被注册为一级 CLI 选项默认值为None表示「由数据自动判定」见 src/robot/conf/settings.py。None、True、False三态设计正是「自动 / RPA / 测试」三种模式的实现基础。混合模式冲突检测如果既不使用--rpa也不使用--norpa却一次执行了多个文件、且其中有的含测试、有的含任务框架会报错。这一校验由套件模型的validate_execution_mode()完成见 src/robot/model/testsuite.pydef validate_execution_mode(self) - bool|None: if self.rpa is None: rpa name None for suite in self.suites: suite.validate_execution_mode() if rpa is None: rpa suite.rpa name suite.full_name elif rpa is not suite.rpa: mode1, mode2 (tasks, tests) if rpa else (tests, tasks) raise DataError( fConflicting execution modes: Suite {name} has {mode1} but fsuite {suite.full_name} has {mode2}. Resolve the conflict for use --rpa or --norpa options to set the execution fmode explicitly. ) self.rpa rpa return self.rpa从源码可以看到顶层套件递归遍历所有子套件一旦发现模式不一致就抛出DataError错误信息会明确指出冲突套件名与双方模式并提示使用--rpa或--norpa显式指定。运行时调用链在 src/robot/run.py执行结束后将校验结果写回settings.rpa供后续日志/报告生成使用。对应的验收测试覆盖了「多个文件模式冲突」「--rpa/--norpa消除冲突」「同一文件既有测试又有任务返回码 252错误信息One file cannot have both tests and tasks.」等多种场景见 atest/robot/rpa/run_rpa_tasks.robot。编程 API 中的执行模式使用TestSuiteBuilder编程构建套件时同样可以通过rpa参数显式指定模式True表示 RPA 模式False表示测试自动化模式缺省时由数据文件表头自动判定语义与--rpa/--norpa完全一致见 src/robot/running/builder/builders.py。执行模式在输出文件中的存储与 Rebot 后处理执行模式会被持久化到生成的output.xml中——具体体现为根元素上的rpa属性rpatrue或rpafalse。当使用 Rebot 对输出文件做后处理生成日志/报告、合并多个输出、按名称/标签过滤时Rebot 会从输出文件中读取该模式并保持术语一致任务模式的日志/报告使用Task Log/Task Statistics测试模式则使用Test Log/Test Statistics。output.xml中rpa属性的存在与取值在验收测试 atest/robot/rpa/run_rpa_tasks.robot 与 atest/robot/rpa/rebot_rpa_tasks.robot 中被反复断言Element attribute should be ${OUTDIR}/output.xml rpa ${rpa}同时log.html/report.html内嵌的window.settings也携带rpa:true/false字段。Rebot 中的模式控制Rebot 默认「保留」输出文件自带的执行模式但如果一次处理多个输出文件、且它们模式冲突就必须用--rpa或--norpa显式指定详见 doc/userguide/src/ExecutingTestCases/PostProcessing.rst。例如# 将任务输出合并后生成报告模式自动保留 rebot tasks1.xml tasks2.xml # 输出文件模式冲突时显式统一为任务模式 rebot --rpa tests.xml tasks1.xml # 强制按测试口径处理任务输出 rebot --norpa tasks1.xml对应验收测试 atest/robot/rpa/rebot_rpa_tasks.robot 覆盖了「Rebot 处理任务输出」「合并任务输出」「用--rpa处理测试输出」「用--norpa处理任务输出」「merge 模式下冲突检测」以及「无匹配任务时的错误信息」等场景。冲突时的错误信息为[ ERROR ] Conflicting execution modes. File ... has tests but files parsed earlier have tasks. Use --rpa or --norpa options to set the execution mode explicitly.对应实现见 src/robot/result/executionresult.py 附近的校验逻辑。任务相关的命令行选项--task 及其过滤组合执行任务时所有常规命令行选项均可使用日志、报告、输出目录、标签过滤、套件过滤等。与测试执行的主要区别在于任务选择选项--task name按名称选择任务是--test的别名尤其适合与--rpa搭配使用。该别名的定义见 src/robot/run.py--task name * Alias to --test. Especially applicable with --rpa.在 Rebot 中同样可用src/robot/rebot.py名称匹配规则与--test相同大小写与空格不敏感支持*、?、[chars]通配符--task可与--suite、--include、--exclude组合使用例如「只运行某套件中名称匹配的任务」。典型用法示例# 执行指定任务文件中的所有任务 robot tasks.robot # 按名称选择单个任务 robot --task Process invoice tasks.robot # RPA 模式下用通配符选择多个任务并排除带某标签的任务 robot --rpa --task Process * --exclude smoke tasks.robot # 混合文件既有测试又有任务时用 --rpa 统一按任务执行 robot --rpa tests.robot tasks.robot关于过滤行为有几个从测试中可确认的细节见 atest/robot/rpa/run_rpa_tasks.robot只要最终选中的是任务即使套件中同时包含测试也不会报错--task task或--suite限定范围后运行混合套件是合法的没有任何任务匹配时错误信息会随选项不同而变化例如no tasks matching name nonex、no tests matching tag xxx and not matching tag yyy、no tests or tasks matching name task in suite nonex任务名为空或任务体内不含关键字时与测试一样会给出相应的空用例错误。从测试数据看任务执行的完整形态仓库中 atest/testdata/rpa/ 目录提供了可直接运行的任务测试数据是理解任务执行的最佳样例tasks1.robot最简单的任务文件*** Tasks ***表格下只有一条调用No operation的任务tasks2.robot包含Task与Another task两条任务后者演示了任务也可以被--norpa当作测试执行注释Can be executed as a test case with --norpa optiontask_aliases.robot任务级设置全家桶Task Tags/Task Setup/Task Teardown/Task Template/Task Timeout并包含Task timeout exceeded超时触发失败与Invalid task timeout非法超时字符串两条负面样例tests.robot纯测试文件用于构造与任务文件的模式冲突场景_tasks_and_tests.robot同一文件同时含*** Tasks ***与*** Test Cases ***是「同一文件不能既有测试又有任务」报错的标准反例tasks/ 目录含__init__.robot的任务套件目录任务可像测试一样组织进目录套件。这些数据配合 atest/robot/rpa/run_rpa_tasks.robot 中的模板关键字Run and validate RPA tasks/Run and validate test cases验证了「任务文件执行后output.xml标记rpatrue、统计标题为All Tasks」以及「测试文件执行后标记rpafalse、标题为All Tests」的完整链路。常见错误与排查要点在任务执行中最常见的几类错误及处理方式如下错误场景报错信息节选处理方式同一文件同时含测试与任务One file cannot have both tests and tasks.拆分文件或删掉多余表头多文件/目录执行时模式冲突Conflicting execution modes: Suite X has tasks but suite Y has tests.追加--rpa或--norpa统一模式Rebot 合并输出时模式冲突Conflicting execution modes. File ... has tests but files parsed earlier have tasks.给 rebot 追加--rpa/--norpa无任务匹配过滤条件no tasks matching name ...等检查任务名/标签/套件名与通配符写法此外从验收测试可知数据解析类错误如同文件测试任务混用的进程返回码为252见 atest/robot/rpa/run_rpa_tasks.robot 中对${result.rc}的断言可作为 CI 集成时区分「数据错误」与「用例失败」的依据。小结任务执行让 Robot Framework 在测试自动化之外成为一套通用的自动化尤其是 RPA执行平台。其核心机制可归纳为三点数据层用*** Tasks ***表头声明任务配合Task Setup/Task Teardown/Task Template/Task Timeout等任务级设置模式层执行模式默认从表头自动判定--rpa/--norpa可显式覆盖模式冲突由validate_execution_mode()在套件树中递归检测产出层模式持久化于output.xml的rpa属性Rebot 后处理时默认保留、必要时用--rpa/--norpa显式设定--task则提供任务维度的精确选择能力。对于想进一步深入源码的读者建议从 src/robot/model/testsuite.py 的模式校验、src/robot/conf/settings.py 的选项注册以及 atest/robot/rpa/run_rpa_tasks.robot 的端到端验收用例入手即可完整还原「任务数据 → 模式判定 → 执行 → 输出 → 后处理」的全链路。赞分享测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载相关推荐Robot Framework 任务Task创建指南从测试语法到 RPA 执行的完整实践Robot Framework 任务Task创建指南从测试语法到 RPA 执行的完整实践 本篇技术指南以 Robot Framework 官方用户指南 C测试RPA接口测试Robot Framework RPA实战用任务模式快速构建机器人流程自动化Robot Framework RPA实战用任务模式快速构建机器人流程自动化 Robot Framework 是一个通用的自动化框架广泛用于验收测试与 RP测试RPA接口测试Robot Framework 3.1 alpha 2 发布解析RPA 任务模式、参数自动类型转换与 Named-only 参数Robot Framework 3.1 alpha 2 发布解析RPA 任务模式、参数自动类型转换与 Named only 参数 本文基于 Robot Fra测试RPA接口测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表