机器人框架 - 我在设置部分参数化资源路径时遇到问题。目前,我的 selenium 项目文件中有对象存储库,并将其保存为
ObjectMap.Robot file
。 OR 文件放置在项目内。我的目标是将 ObjectMap.Robot
放置在远程位置以访问它。
目前我已经在
ConfigVariables.robot
中定义了变量
*** Variables ***
${DataFilePath} /Sample/DataFiles/
${OR_PATH} \\\\AIX2UB333/Resources/ObjectMap/
${OR_PATH} 不断变化并且要访问我的关键字文件中的 OR 文件,我已将我的设置设置如下。
*** Settings ***
Resource ../Resources/ConfigurationFiles/ConfigVariables.robot
Resource ${OR_PATH}/ObjectMap.robot
问题:错误显示为
导入名称/路径“${OR_PATH}/ObjectMap.robot”已参数化。 一些使用的参数无法解析。使用变量映射 red.xml 用于参数解析
尝试添加到
red.xml
,错误仍然存在。
有趣的是,如果我运行测试用例,它将成功运行。但在测试用例中,对象映射中使用的变量有一条红色错误线。每个变量都有误差
使用了变量,但未定义。
正如 @Bryan Oakley 所强调的,这不是 Robot Framework 问题,而是 Eclipse RED Robot Framework 编辑器中的项目配置问题。
在我看来,您的设置中的某些内容在项目变量映射方面不正确。请通过从市场更新 Eclipse 或从 GitHub 站点下载最新版本来确保您拥有最新的 RED。我创建了一个新项目并添加了三个文件
project:
.
├── red.xml
├── OR
| └── ObjectStore.robot
├── test.robot
└── resource.robot
测试机器人
*** Setting ***
Resource resource.robot
Resource ${OR}/ObjectStore.robot
*** Test Cases ***
资源机器人
*** Variable ***
${OR} OR
ObjectStore.robot
[EMPTY]
这可以确保 test.robot 中不会显示错误
由于您的对象存储可能会发生变化,我还建议不要将其包含在硬编码配置参考中。相反,使用 Robot Framework 命令行变量的强大功能来添加变量或引用变量文件以获得您所寻求的灵活性,而无需在从源代码存储库获取文件后对其进行修改。
我已经找到了针对所要求情况的解决方法。我插入了一个 py 文件,作为将 ObjectMap 从远程计算机复制到本地项目的代码,该代码的方法名称用作机器人中的关键字并应用于 Suite 设置中。在机器人中,我还制作了一个标志,仅在条件满足时才运行。添加该标志是因为,如果任何人想要在同一台远程计算机中运行代码,这将在同一台计算机中创建它的对象映射的各种副本。
我的py代码
'def copy_file_from_source_to_destination(self,src,dst):
try:
shutil.copy2(src, dst)
except Exception as e:
return str(e)
return 'Success' '
我的机器人关键词
'Get Central OR
${DESTINATION}= Catenate ${EXECDIR}${TARGET_OR}
Log ${DESTINATION}
${CALL_STATUS}= Convert To Uppercase ${CALL_STATUS}
Run Keyword If '${CALL_STATUS}'=='YES' Copy File From Source To Destination ${CENTRAL_OR} ${DESTINATION}
有点晚了(我一定错过了这个问题),让我总结一下上面的问题。红色不知道变量的值。变量可以在执行期间修改(通过测试逻辑、套件设置、变量文件等),因此 RED 无法采用变量部分的任何赋值来解析参数化路径。这同样适用于系统变量,例如 ${EXECDIR},它可能会根据机器人执行的启动位置以及机器人命令的构建方式而发生变化。
在另一种情况下,CI 作业根据输入参数(例如要使用 Robot 进行测试的软件版本或类型)修改路径中的变量以使用仅对该软件版本或类型有效的正确库或资源。如果没有 VM 机制,测试人员将不得不临时更改具有参数化导入的套件以直接路径,以便能够使用正确的导入(诺基亚中的真实场景以及 red.xml 中 VM 的原因)。
因此,对于路径中带有变量的任何导入,RED 假定 USER 必须指定要在编辑阶段使用的临时有效值。
这是 red.xml 中变量映射的原因 - 允许指定变量值,以便可以解析任何路径,从而允许导入文件。
RED 帮助中还有一个条目(在应用程序和 github 上):http://nokia.github.io/RED/help/user_guide/working_with_RED/variable_mapping.html
有关“项目/工作空间之外的内容”的警告 - 该警告可能有助于理解为什么从不同计算机上的存储库检出测试时测试不起作用。任何错误/警告都可以在Windows->首选项->机器人框架->错误/警告中更改 帮助主题:http://nokia.github.io/RED/help/user_guide/validation/validation_preferences.html
如果您有任何疑问或问题,请在 RED GitHub 项目上创建问题跟踪器:https://github.com/nokia/RED/issues
红色下午
根据我的记忆,如果您将鼠标悬停在其中一个关键字上,您会看到:“解析名称:abspath('.')”,并且使用 EXECDIR 您需要指定 EXECDIR 变量的值,这可以在
PyCharm
:设置>语言和框架>机器人框架>变量...我相信或使用robot.variables设置指定EXECDIR变量的值。
希望其他人可以根据需要添加更多 EXECDIR 的用法。