【问题标题】:Robot FrameWork : Issue when parameterizing Resource path in SettingsRobot FrameWork:在设置中参数化资源路径时出现问题
【发布时间】:2018-03-26 15:52:30
【问题描述】:

Robot Framework - 我在设置部分中参数化资源路径时遇到问题。目前我的 selenium 项目文件中有对象存储库,并将其保存为 ObjectMap.Robot file。 OR 文件放置在 project 中。我的目标是将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,错误仍然存​​在。 有趣的是,如果我运行测试用例,它将成功运行。但是从 objectmap 使用的变量在测试用例中有一条红色的错误线。每个变量都有错误

使用了变量,但没有定义。

【问题讨论】:

  • 您只是在问如何消除 RED 编辑器中的错误吗?
  • 错误显示在资源 ${OR_PATH}/ObjectMap.robot 和 ObjectMap.robot 中定义的所有变量中。基本上想知道如何在资源路径中使用变量
  • 测试是否超出红色范围?
  • @BryanOakley,您能否具体说明在红色之外运行的测试是什么意思?
  • Red 是一个编辑器(或者更准确地说,是一个编辑器的扩展)。你不需要 red 来运行机器人测试。

标签: eclipse robotframework


【解决方案1】:

正如@Bryan Oakley 所强调的,这不是机器人框架问题,而是 Eclipse RED 机器人框架编辑器中的项目配置问题。

在我看来,您的设置中的某些内容在项目变量映射方面不正确。请通过从市场更新您的 Eclipse 或从 GitHub 站点下载最新版本来确保您拥有最新的 RED。我创建了一个新项目并添加了三个文件

project:
.
├── red.xml
├── OR
|   └── ObjectStore.robot
├── test.robot
└── resource.robot

test.robot

*** Setting ***
Resource    resource.robot
Resource    ${OR}/ObjectStore.robot

*** Test Cases ***

资源.机器人

*** Variable ***
${OR}    OR

ObjectStore.robot

[EMPTY]

RED.xml

这样可以确保 test.robot 中不显示错误

由于您的对象存储可能会发生变化,我还建议不要将其包含在硬编码配置参考中。而是使用 Robot Framework 命令行变量的强大功能 add a variable 或参考 a variable file 以获得所需的灵活性,而无需在从源代码存储库中获取文件后对其进行修改。

【讨论】:

  • 现在我得到一个错误,当我使用代码资源时,路径'D:/path/ObjectMap.robot'指向你工作区之外的位置。 ${OR}/ObjectStore.robot。 D:/path 是为了查看外部位置而给出的测试目的
  • 通常当我有一个外部实现的文件时,我会在工作区中保留一个模板,并使用它在变量映射中引用它。然后在运行时指定外部实现。话虽如此,可以说这需要警告而不是错误。如果您有这种感觉,请在 GitHub 上记录问题。
【解决方案2】:

我已经找到了解决问题的方法。我插入了一个 py 文件,该文件作为将 ObjectMap 从远程机器复制到本地项目的代码,该代码的方法名称用作机器人中的关键字并应用于套件设置。在机器人中,我也制作了一个标志,仅在条件满足时才运行。如果有人想在同一台远程机器上运行代码,并在同一台机器上创建对象映射的各种副本,则添加该标志。

我的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} 

【讨论】:

    【解决方案3】:

    有点晚了(我一定错过了这个问题),让我总结一下上面的问题。 RED 不知道变量的值。变量可以在执行期间进行修改(通过测试逻辑、套件设置、变量文件等),因此 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->Preferences->Robot Framework -> Error/Warnings 中更改 帮助主题:http://nokia.github.io/RED/help/user_guide/validation/validation_preferences.html

    如果您有任何疑问或问题,请在 RED GitHub 项目的问题跟踪器上创建它们:https://github.com/nokia/RED/issues

    红色下午

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多