十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Robot Framework 5.1 新特性全解析:多语言本地化、关键字标签与命名空间增强实战指南

Robot Framework 5.1 新特性全解析:多语言本地化、关键字标签与命名空间增强实战指南 测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载Robot Framework 5.1 alpha 1 是 5.1 系列的首个预览版本于 2022 年 7 月 15 日发布其核心使命是启动官方本地化Localization工作同时带来关键字标签体系、关键字命名空间、执行控制标签、Python 3.11 兼容与用户关键字性能优化等一系列增强。本文以 rf-5.1a1.rst 发布说明为骨架深入 src/robot 源码与 atest/robot 验收测试带你逐项掌握--language多语言用法、Keyword Tags/Test Tags新设置、robot:private私有关键字、robot:stop-on-failure控制标签等新能力并理解其底层实现原理。安装与版本定位5.1 alpha 1 面向对翻译感兴趣的开发者是一个预览版本。使用 pip 安装最新可用含预发布版本pip install --pre --upgrade robotframework如需精确安装此版本pip install robotframework5.1a1也可以从 PyPI 下载源码发行包手动安装更详细的安装方式见仓库根目录的 INSTALL.rst。核心增强一本地化Localization5.1 通过允许翻译数据文件中使用的各种标记marker来启动本地化工作这是本次发布最重要的主题对应 issue #4096 与 #519。可以翻译的内容数据文件的表头headers如Test Cases、Settings、Keywords、Variables、Comments等设置项名称settings如Documentation、Test Setup、Library、Resource等BDD 前缀Given/When/Then包括And、But在内。计划中还将支持翻译 Boolean 参数转换中的True/False词汇issue #4400未来的版本可能继续支持翻译IF、FOR等语法关键字、日志与报告内容以及错误消息。指定语言的方式通过命令行选项--language指定。对于内置语言直接用语言代码即可robot --language fi tests.robot对于自定义语言可以创建自定义语言文件并像导入模块一样使用robot --language MyLang.py tests.robot内置语言列表5.1 alpha 1 除默认支持的英语外内置了以下社区贡献的语言语言代码捷克语 Czechcs荷兰语 Dutchnl芬兰语 Finnishfi法语 Frenchfr德语 Germande葡萄牙语 Portuguesept巴西葡萄牙语 Brazilian Portugueseptbr源码级实现Languages 与 Language 类本地化功能的底层实现在 src/robot/conf/languages.pyLanguage是语言定义的基类通过类名派生语言代码如类Fi→ 代码fi类PtBr→ 代码pt-BR通过类 docstring 第一行派生语言名称。子类只需声明settings_header、library_setting、given_prefixes、true_strings等类属性即可完成整套翻译Languages类负责合并多种语言headers、settings、bdd_prefixes、true_strings、false_strings会被统一汇总_add_language方法languages.py因此可以同时指定多个语言BDD 前缀会被编译成正则表达式bdd_prefix_regexp属性将前缀拼接为(prefixes)\s并忽略大小写匹配languages.py这对应 5.1 中Given/When/Then前缀后必须跟空格的不兼容变更自定义语言文件会被当作 Python 模块导入从中收集所有Language子类_import_language_modulelanguages.py。在配置层面RobotSettings将--language解析到Language选项settings.py并提供惰性求值的languages属性settings.py。示例创建一个MyLang.py自定义语言文件继承Language并覆盖目标属性即可例如from robot.conf.languages import Language class MyLang(Language): My Language settings_header Asetukset given_prefixes [Oletetaan] # 其余属性同理可参考 src/robot/conf/languages.py 中 Fi 类的完整定义实测验证验收测试中已有大量多语言用例如 atest/robot/parsing/translations.robot并且仓库在 5.1 之后还陆续加入了 Bosnian、Thai、Polish、Ukrainian、Spanish、Russian、简体中文zh_CN、繁体中文zh_TW、土耳其语等语言类src/robot/conf/languages.py说明该机制具备良好的扩展性。核心增强二关键字与测试标签的设置增强新增Keyword Tags设置现在可以为某个文件中的所有关键字统一设置标签对应 issue #4373*** Settings *** Keyword Tags smoke regression该设置在资源文件.resource/.robot、测试用例初始化文件和套件初始化文件__init__.robot中均可用在初始化文件中使用时只影响该文件内的关键字不会向下传播到更低层级的套件。在词法分析层面Keyword Tags已被注册为合法的设置 tokensrc/robot/parsing/lexer/settings.py并对应KEYWORD_TAGS语句模型src/robot/parsing/model/statements.py。Libdoc 相关的验收测试如 atest/robot/libdoc/resource_file.robot会验证Keyword Tags是否被正确收集到关键字文档中。Force Tags更名为Test Tags为了让测试相关设置命名更一致Test Setup、Test Timeout、Test Tags等并更好地区分测试标签与关键字标签Force Tags被重命名为Test Tagsissue #4368*** Settings *** Test Tags smoke旧的Force Tags仍然可用但已被标记为未来将弃用。创建 RPA 任务时可以使用Task Tags作为Test Tags的别名。词法分析器中Task Tags、Force Tags都会被统一归一化为Test Tagstokensrc/robot/parsing/lexer/settings.py。Default Tags的弃用计划Default Tags设置为部分测试设置标签将同样被弃用。未来将引入[Tags]设置配合-tag语法表示该测试不应获得标签tag该语法也计划与新的Keyword Tags组合使用issue #4374。因此从 5.1 起在[Tags]中使用以连字符开头的标签如-tag被视为弃用如果确实需要字面量值请使用转义形式\-tagissue #4380。注意Test Tags、Keyword Tags这些新名称本身也已被纳入本地化体系src/robot/conf/languages.py这正是统一命名便于翻译这一动机的体现。核心增强三关键字命名空间Namespaces增强资源文件私有关键字robot:private现在可以在资源文件中将关键字标记为私有方法是为其添加robot:private标签issue #430*** Keywords *** Internal Helper [Tags] robot:private Log This is private效果跨文件使用警告如果该关键字被资源文件之外的代码调用会发出警告Libdoc 排除私有关键字不会出现在 Libdoc 生成的 HTML 库文档中。源码证据关键字实现通过tags.robot(private)判断私有性src/robot/running/keywordimplementation.py执行时通过context.warn_on_invalid_private_call发出警告src/robot/running/userkeywordrunner.py实现于 src/robot/running/context.py命名空间解析时会优先选择非私有关键字src/robot/running/namespace.pyLibdoc 侧私有信息会写入 spec 的 JSON/XML 输出src/robot/libdocpkg/jsonbuilder.py、src/robot/libdocpkg/xmlwriter.pyHTML 文档默认include_privateFalsesrc/robot/libdocpkg/htmlwriter.py。验收测试覆盖了私有关键字在资源文件文档中的行为如 atest/robot/libdoc/resource_file.robot。本地关键字优先于导入的关键字当某个资源文件中的关键字调用另一个同名关键字时同文件内的本地关键字优先即使其他资源文件中存在同名关键字issue #4366。此前这种情况会引发冲突。其实现位于命名空间的_prioritize_same_file_or_public方法当调用者存在父源文件时优先选择source与调用者相同的候选关键字src/robot/running/namespace.py。一个已知的弃用行为如果关键字存在于其使用者的同一资源文件中但同时测试用例文件中也有同名关键字目前仍是测试用例文件中的关键字优先历史行为。但该行为在 5.1 中已被弃用未来5.2 起本地关键字将拥有最高优先级。核心增强四禁用 continue-on-failure 模式Robot Framework 通常在失败时停止执行当前关键字或测试例外情况包括 teardown、模板以及通过robot:continue-on-failure或robot:recursive-continue-on-failure标签显式开启的继续失败模式。5.1 新增了两个标签issue #4303用于在需要时禁用隐式或显式的继续失败模式*** Test Cases *** My Test [Tags] robot:recursive-stop-on-failure Keyword 1 Keyword 2标签作用robot:stop-on-failure在标记的元素本身处停止非递归robot:recursive-stop-on-failure在标记的元素及其所有嵌套关键字中停止实现位于continue_on_failure方法它会逆序遍历当前调用栈的父级用户关键字与测试stop-on-failure/recursive-stop-on-failure标签优先于对应的 continue 标签被检查并返回Falsesrc/robot/running/context.py。同时 5.1 还明确文档化即使 continue-on-failure 模式处于激活状态失败的测试 setup 仍会停止执行issue #4404。核心增强五Python 3.11 支持与 Python 3.6 弃用5.1 官方支持即将发布的 Python 3.11issue #4401且不兼容性问题不大早期版本在 3.11 上也能正常运转。与此同时Python 3.6 被弃用它已于 2021 年 12 月到达生命周期终点5.1 及所有未来 RF 5.x 仍支持它但Robot Framework 6.0 将不再支持 Python 3.6issue #4295官方建议用户尽早升级到更新版本。核心增强六用户关键字执行性能优化5.1 降低了用户关键字执行的额外开销overhead尤其在用户关键字频繁失败的场景下差异明显例如配合Wait Until Keyword Succeeds使用或在TRY/EXCEPT循环中。该优化来自社区 PRissue #4353/#4388此外解析性能也有增强issue #4353 中同时包含 parsing 性能改进。向后不兼容变更5.1 引入了以下不兼容变更升级时需注意BDD 前缀后必须跟空格Given/When/Then前缀含本地化后的前缀后必须紧跟空格issue #4379。这对应bdd_prefix_regexp中(prefixes)\s的正则要求src/robot/conf/languages.pyDictionary Should Contain Item不再做字符串转换Collections 库中该关键字不再在比较前将值转换为字符串issue #4408Libdoc spec 文件的生成时间格式变更XML 与 JSON spec 文件中的生成时间统一为带时区格式2022-05-27T19:07:1500:00。旧 XML 格式...Z与新格式等价旧 JSON 格式2022-05-27 19:07:15不含时区信息issue #4262。该变更同时支持通过SOURCE_DATE_EPOCH环境变量生成确定性deterministic文档src/robot/libdocpkg/output.py用于可复现构建场景。已弃用特性汇总特性弃用说明替代方案Force Tags仍可用6.0 起发出可见弃用警告最终移除使用Test Tags任务场景用Task TagsDefault Tags同上未来的[Tags]-tag语法[Tags]中以-开头的字面量标签弃用转义为\-tagPython 3.65.x 仍支持6.0 移除升级 Python测试用例文件关键字优先于资源文件本地关键字5.2 起本地关键字优先将本地关键字放在资源文件中WITH NAME库导入别名仍可用6.0 起警告使用AS其中WITH NAME别名标记在 5.1 中引入了新的AS写法issue #4371。动机是与 Python 的as保持一致且AS已用于TRY/EXCEPT复用同一标记可以减少内部 token 种类也有助于降低后续翻译成本*** Settings *** Library Collections AS Col5.1 中AS与WITH NAME均可用于为导入的库设置别名。附带修复与其他增强5.1 alpha 1 共包含 31 个 issue除上述主要内容外还包括Libdoc 相关库参数扩展名与资源文件冲突时给出更准确的错误消息#4351修复 spec 文件中弃用关键字信息的存储#4387解析模型TRY/WHILE语句的from_params创建支持#4357Variable.from_params对列表值处理修复#4359解析错误被误识别为EmptyLines的修复#4381执行相关continuable failures 终止WHILE循环的修复#4355套件初始化文件中 RPA 设置别名失效的修复#4384Collections 库Get From Dictionary支持默认值参数#4398PyPI 元数据为 PyPI 添加项目 URL#4312文档改进修正 YAML 变量文件示例#4349、TRY/EXCEPT示例#4358、增强--timestampoutputs文档#4346、说明如何导入打包进 Python 包中的资源文件#4372其他修复--doc或--metadata值与已有目录同名时报错的问题#4394。结语Robot Framework 5.1 以本地化为旗帜为数据文件、BDD 前缀乃至未来的布尔字面量铺平了多语言道路同时通过Keyword Tags、Test Tags重构了标签设置体系以robot:private和本地关键字优先规则重塑了资源文件命名空间语义并以robot:stop-on-failure系列标签补齐了失败控制的最后一块拼图。理解这些新机制不仅能让你在 5.1 上写出更规范、更易维护的测试数据也能为跟踪后续 5.x 系列的演进打下基础。若想深入了解每个特性背后的完整实现可以直接研读 src/robot/conf/languages.py、src/robot/running/context.py 与 src/robot/running/namespace.py并对照 atest/robot/parsing/translations.robot 等验收测试验证行为。赞分享测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载相关推荐如何永久保存微信聊天记录你的个人数字记忆档案馆终极指南如何永久保存微信聊天记录你的个人数字记忆档案馆终极指南 你是否曾为珍贵的微信对话无法永久保存而烦恼那些与家人的温馨时刻、朋友的重要约定、工作的关键沟通都值测试RPA接口测试留痕保姆级指南微信聊天记录导出与个人数据管理免费本地提取让隐私自己做主留痕保姆级指南微信聊天记录导出与个人数据管理免费本地提取让隐私自己做主 聊天记录存得再满也不代表它真属于你。换机、清缓存、平台一改规则那些重要对话说没就测试RPA接口测试3步把Windows 11的任务栏和开始菜单改回旧样式ExplorerPatcher完整介绍3步把Windows 11的任务栏和开始菜单改回旧样式ExplorerPatcher完整介绍 升级Windows 11后的第一个上午任务栏图标集体挪到了屏幕测试RPA接口测试上一篇Automa本地化存储加密CryptoJS与安全数据持久化下一篇基于百度地图 Place API 的城市 POI 抓取python-mini-projects 中 Baidu_POI_crawl 实战全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表