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

资讯详情

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

Robot Framework 7.0.1 版本发布详解:回归修复、兼容性回调与日语本地化

Robot Framework 7.0.1 版本发布详解:回归修复、兼容性回调与日语本地化 测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载摘要Robot Framework 7.0.1 是 7.0.x 系列的首个也是唯一计划内的缺陷修复版本于 2024 年 6 月 10 日发布。该版本聚焦于修复 7.0 引入的向后不兼容回归问题——包括--test/--include选项的累积行为回退、run_keyword的非字符串命名参数 API 回退同时带来了日语本地化等增强并修复了多个影响早期版本的问题。本文基于官方发布说明 rf-7.0.1.rst结合仓库源码如 languages.py、posix.py 等进行深度解读帮助你快速评估是否需要升级以及升级前需注意的兼容性变化。版本背景与安装方式Robot Framework 7.0.1 是 7.0.x 系列中第一个也是唯一计划中的缺陷修复版本旨在修复所有已报告的回归问题以及一些影响更早版本的问题。该版本于 2024 年 6 月 10 日星期一发布。安装命令如果你已安装 pip运行以下命令即可安装最新可用版本pip install --pre --upgrade robotframework或者安装确切版本 7.0.1pip install robotframework7.0.1也可以从 PyPI 下载安装包手动安装。更多安装方式参见 INSTALL.rst。版本特性概览该版本修复了所有报告的回归问题以及一些影响早期版本的问题。它唯一的较大增强是新的日语本地化支持对应 GitHub Issue #5069。向后不兼容的变更--test和--include选项恢复非累积行为Robot Framework 7.0 曾改变了--test和--include选项的行为一个测试或任务只要匹配其中任一选项即被选中而之前需要同时匹配两者对应 Issue #4721。这一行为当时被认为更有用但结果证明它与--rerun-failed选项以及 Pabot 工具一起使用时会产生问题。在权衡利弊后开发团队认为新行为的收益不足以弥补其带来的问题因此在 7.0.1 中恢复了此前的行为对应 Issue #5023。实际影响在 7.0.1 中--test与--include需要同时匹配才会选中测试。例如robot --test smoke --include critical tests.robot这条命令将只运行名称为smoke且带有critical标签的测试。以非字符串值传递命名参数的程序化 API 回退Robot Framework 7.0 曾试图为程序化创建关键字提供便捷 API核心特性是支持使用非字符串值的命名参数对应 Issue #5000。然而选定的方法导致了向后不兼容问题需要回退对应 Issue #5031。由于使用非字符串值的命名参数对 DataDriver 等工具很重要作为 Issue #5031 的一部分添加了一个新的半私有 API 来满足这一需求。该 API 有一些限制计划在 Robot Framework 7.1 中添加更好的公共 API对应 Issue #5143。致谢Robot Framework 开发由 Robot Framework Foundation 及其 60 多个成员组织赞助。如果你的组织正在使用 Robot Framework 并从中受益可以考虑加入基金会以支持其发展。社区也做出了一些伟大的贡献YasGitHub 用户 5003提供了日语本地化对应 Issue #5069。Lukas RolfGitHub 用户 lfighter修复了 Dialogs 库中发生的崩溃对应 Issue #4993。Many KasirihaGitHub 用户 manykarim为 API 文档 实现了更好的主题对应 Issue #5039。Federico PellegrinGitHub 用户 fedepell修复了即将推出的 Python 3.13 下的单元测试对应 Issue #5035。官方对 Python 3.13 的支持计划在 Robot Framework 7.1 中提供对应 Issue #5091。sunday2GitHub 用户 sunday2修复了目录路径包含空格时验收测试的问题对应 Issue #5100。感谢 Robot Framework Foundation、上述社区成员以及所有提交错误报告、调试问题或以其他方式帮助 Robot Framework 7.0.1 开发的人。完整的修复与增强清单7.0.1 共修复了19 个问题涵盖 bug、增强和不同优先级。完整清单如下ID类型优先级摘要#5012bug高--legacy-output在 Rebot 组合、合并或过滤结果时不工作#5023bug高由于向后不兼容问题使--test和--include恢复非累积行为#5031bug高使用BuildIn.run_keyword时非字符串参数的问题#5063bug高如果signal.setitimer不可用Robot Framework 无法在 Windows 之外运行例如影响 Pyodide#5120bug高for 循环中的错误语法使 RF 崩溃且不生成 html 报告#5069enhancement高日语本地化#4993bug中Dialogs在 Linux 上关闭对话框的问题#5017bug中listener v3 方法的start/end_body_item缺少在 User Guide 中的文档#5051bug中如果找不到关键字记录未执行的关键字会产生不必要的开销#5114bug中在包含 TypedDict 的联合类型转换中字典不能按原样接受#5115bug中Python 3.11 中NotRequired和Required在TypedDict转换中处理不当#5128bug中用户关键字中仅限名称的参数未进行 trace 日志记录#5039enhancement中在 Read The Docs 的 API 文档中使用更好的主题#5134enhancement中在 User Guide 中新增关于样式的章节#5032bug低CollectionsGet/Pop From Dictionary的文档中未显示默认值#5035bug低单元测试在 Python 3.13 下失败#5070bug低User Guide 中 listener 接口文档的错别字#5100bug低目录路径包含空格时验收测试失败#5130bug低Collectionsignore_case参数的值被意外记录源码层面的深度解读为了帮助你更好地理解这些修复的实际影响以下结合当前仓库源码对几个关键修复进行深度剖析。非字符串命名参数 API 的源码视角run_keyword是 Robot Framework 中动态执行关键字的核心 API。在当前仓库的 BuiltIn.py 中可以看到run_keyword的实现位于第 1954 行附近def run_keyword(self, name, *args): Executes the given keyword with the given arguments. Because the name of the keyword to execute is given as an argument, it can be a variable and thus set dynamically, e.g. from a return value of another keyword or from the command line. if not is_string(name): raise RuntimeError(Keyword name must be a string.) ctx self._context if not (ctx.dry_run or self._accepts_embedded_arguments(name, ctx)): name, args self._replace_variables_in_name([name] list(args)) if ctx.steps: data, result, _ ctx.steps[-1] lineno data.lineno else: # Called, typically by a listener, when no keyword started. data lineno None result ctx.test or (ctx.suite.setup if not ctx.suite.has_tests else ctx.suite.teardown) kw Keyword(name, argsargs, parentdata, linenolineno) return kw.run(result, ctx)从源码结构可以看出run_keyword接受关键字名称作为第一个参数必须是字符串随后是参数列表。在 7.0 中曾尝试允许以非字符串值作为命名参数传递但这带来了向后不兼容问题因此在 7.0.1 中被回退并引入了半私有 API 以满足 DataDriver 等工具的需求。超时机制的源码视角Issue #5063 修复了signal.setitimer不可用时如 Pyodide 环境Robot Framework 无法运行的问题。当前仓库中的 posix.py 展示了超时机制的实现from signal import setitimer, signal, SIGALRM, ITIMER_REAL class Timeout: def __init__(self, timeout, error): self._timeout timeout self._error error def execute(self, runnable): self._start_timer() try: return runnable() finally: self._stop_timer() def _start_timer(self): signal(SIGALRM, self._raise_timeout_error) setitimer(ITIMER_REAL, self._timeout) def _raise_timeout_error(self, signum, frame): raise self._error def _stop_timer(self): setitimer(ITIMER_REAL, 0)该模块直接依赖signal.setitimer实现基于 SIGALRM 的超时机制。在 Pyodide 等setitimer不可用的环境中7.0 之前会导致运行失败7.0.1 对此进行了修复确保框架在这些平台上也能正常运行。日语本地化的源码视角日语本地化是 7.0.1 唯一的较大增强。在当前仓库的 languages.py 中可以看到JaJapanese类位于第 1271 行附近其注释明确标注New in Robot Framework 7.0.1class Ja(Language): Japanese New in Robot Framework 7.0.1. settings_header 設定 variables_header 変数 test_cases_header テスト ケース tasks_header タスク keywords_header キーワード comments_header コメント library_setting ライブラリ resource_setting リソース variables_setting 変数 name_setting 名前 documentation_setting ドキュメント metadata_setting メタデータ suite_setup_setting スイート セットアップ suite_teardown_setting スイート ティアダウン test_setup_setting テスト セットアップ task_setup_setting タスク セットアップ test_teardown_setting テスト ティアダウン task_teardown_setting タスク ティアダウン test_template_setting テスト テンプレート task_template_setting タスク テンプレート test_timeout_setting テスト タイムアウト task_timeout_setting タスク タイムアウト test_tags_setting テスト タグ task_tags_setting タスク タグ keyword_tags_setting キーワード タグ setup_setting セットアップ teardown_setting ティアダウン template_setting テンプレート tags_setting タグ timeout_setting タイムアウト arguments_setting 引数 given_prefixes [仮定, 指定, 前提条件] when_prefixes [条件, 次の場合, もし, 実行条件] then_prefixes [アクション, その時, 動作] and_prefixes [および, 及び, かつ, 且つ, ならびに, 並びに, そして, それから] but_prefixes [ただし, 但し] true_strings [真, 有効, はい, オン] false_strings [偽, 無効, いいえ, オフ]这个类定义了完整的日语翻译映射包括表格头、设置项、BDD 前缀Gherkin 风格的 Given/When/Then/And/But、布尔字符串等。使用日语本地化后你可以编写如下的测试数据*** 設定 *** ライブラリ OperatingSystem *** テスト ケース *** サンプルテスト ディレクトリを作成 /tmp/テスト使用方式通过--language ja命令行选项或在配置文件中设置语言即可启用robot --language ja tests.robot--test与--include非累积行为的源码视角--test和--include的筛选逻辑在 settings.py 中定义。从源码可以看到相关的配置选项TestNames : (test, []), Include : (include, []),对应的属性方法property def test_names(self): return self._filter_empty(self[TestNames] self[TaskNames]) property def include(self): return self._filter_empty(self[Include])在 7.0 中--test与--include是累积关系匹配任一即可7.0.1 恢复为非累积关系需同时匹配。这影响了测试筛选的实际语义也影响了--rerun-failed其实现见 gatherfailed.py 中的gather_failed_tests函数与 Pabot 工具的配合使用。--legacy-output与 Rebot 的修复Issue #5012 修复了--legacy-output在 Rebot 组合、合并或过滤结果时不工作的问题。该选项在 settings.py 中定义为LegacyOutput : (legacyoutput, False)用于生成兼容旧版 Robot Framework 的输出格式。升级建议基于上述信息以下是关于是否升级到 7.0.1 的建议如果你正在使用 7.0.x 系列强烈建议升级到 7.0.1因为它修复了 7.0 引入的多个回归问题如--test/--include行为、run_keyword非字符串命名参数、--legacy-output与 Rebot 等且这是该系列唯一的修复版本。如果你正在使用 7.0 之前的版本7.0.1 也修复了一些影响更早版本的问题如 Dialogs 库在 Linux 上的崩溃、超时机制在setitimer不可用环境下的运行问题等但需要注意 7.0 系列本身的向后不兼容变更详见 rf-7.0.rst。如果你是 DataDriver 等工具的用户需要注意非字符串命名参数的 API 回退。7.0.1 提供了半私有 API 作为过渡方案更好的公共 API 计划在 7.1 中推出。如果你使用日语环境7.0.1 新增了日语本地化可以通过--language ja启用。如果你使用 Pabot 并行执行工具7.0.1 恢复了--test与--include的非累积行为这解决了与 Pabot 的兼容性问题。总结Robot Framework 7.0.1 是一个聚焦于稳定性的缺陷修复版本它修复了 7.0 引入的所有回归问题恢复了--test/--include的非累积行为和run_keyword的非字符串命名参数行为新增了日语本地化并修复了多个影响更早版本的问题。对于 7.0.x 用户这是必升版本对于更早版本用户也可以从中获得多项修复。该版本共解决了 19 个问题是 7.0.x 系列收尾的重要里程碑为 7.1 的公共 API 改进和新功能铺平了道路。赞分享测试RPA接口测试【免费下载链接】robotframeworkGeneric automation framework for acceptance testing and RPA项目地址https://gitcode.com/gh_mirrors/ro/robotframework点击查看免费下载相关推荐Robot Framework 7.0.1 RC1 发布解析回归修复、日本语本地化与回滚决策Robot Framework 7.0.1 RC1 发布解析回归修复、日本语本地化与回滚决策 本文基于仓库内 doc/releasenotes/rf 7.0.测试RPA接口测试Robot Framework 7.0.1 RC2 发布说明回归修复、非字符串命名参数 API 调整与日语本地化Robot Framework 7.0.1 RC2 发布说明回归修复、非字符串命名参数 API 调整与日语本地化 Robot Framework 7.0.1测试RPA接口测试Robot Framework 2.9.1 发布详解嵌入式参数回归修复、Jython 2.7 集成与向后不兼容变更Robot Framework 2.9.1 发布详解嵌入式参数回归修复、Jython 2.7 集成与向后不兼容变更 本指南以官方发布说明 doc/releas测试RPA接口测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表