Robot Framework 3.0.4能否实现参数差异化用例跨文件共享执行
Robot Framework 3.0.4版本跨文件用例复用能力说明
首先说死结论:你们当前使用的3.0.4版本,根本没法实现“引用公共资源文件就自动跑资源里写的测试用例”的设想效果,这是版本原生机制的硬限制,没有无改动的捷径可走。
为什么这个设想在3.0.4里跑不通
3.0.4的文件规则卡得非常死:
- 只要是用
Resource方式导入的公共文件,解析的时候只会认两类内容:*** Variables ***块的公共变量、*** Keywords ***块的公共关键字。你哪怕在Resource文件里硬写*** Test Cases ***块,解析的时候直接抛格式错误,既不会把这些用例拉进执行列表,本身也不符合Resource文件的格式要求。 - 你们想的“导入资源就自动加载里面的用例、跟着当前文件配的参数跑”这个功能,是Robot Framework 3.2版本之后才加的,3.0.4里压根没写对应的逻辑,绕都绕不过去。
3.0.4下能落地的等价实现,完全匹配你们的核心需求
你们本来就已经在做“公共关键字抽到common.robot里复用”的流程,两种方案都能达到“不重复写重复测试逻辑、适配.c/.cpp差异化参数”的目标,改动量极小:
方案1:把整套测试流程封装成带参数的公共关键字
这是和你们现有流程最贴合的方式,几乎不用改现有代码:
- 把两套测试集里完全重复的Given/When/Then步骤,直接打包成一个带参数的公共关键字放到common.robot里,比如:
代码生成全流程校验 [Arguments] ${file_ext} Given 搭好代码生成工具的基础运行环境 When 触发生成流程,目标文件后缀为 ${file_ext} Then 校验生成文件的语法、功能正确性 - 每个场景的测试文件里,只需要写一行极简用例,调用这个关键字传对应参数就行,根本不用重复写整套测试步骤:
- c.robot里的用例:
*** Test Cases *** .c文件生成全流程校验 代码生成全流程校验 .c - cpp.robot里的用例:
*** Test Cases *** .cpp文件生成全流程校验 代码生成全流程校验 .cpp
- c.robot里的用例:
方案2:靠层级套件的变量继承,实现一份用例跑两套参数
如果你们连测试文件里那一行调用代码都不想写,可以用3.0.4原生支持的套件初始化机制实现:
- 把所有公共测试用例写到一份独立的普通测试文件
common_generation_tests.robot里,所有用到差异化参数的位置统一用全局变量${TARGET_EXT} - 按测试场景建两个独立的套件文件夹:
c_suite文件夹下放初始化文件__init__.robot,在*** Variables ***块里定义${TARGET_EXT} .ccpp_suite文件夹下放初始化文件__init__.robot,在*** Variables ***块里定义${TARGET_EXT} .cpp
- 跑测试的时候分别指定两个套件的路径,同一份公共测试文件会自动继承对应套件下的变量,不用复制两份测试文件,也不用在子测试里写重复用例。
避坑提醒
别硬在3.0.4的Resource文件里写*** Test Cases ***块,这类格式错误会直接导致整个测试套件解析失败,没有任何兼容逻辑可以绕开这个限制。
内容的提问来源于stack exchange,提问作者Nemelis
相关产品推荐
相关产品推荐

