机器人框架:在“设置”中参数化资源路径时出现问题

时间:2017-10-14 18:39:08

标签: eclipse robotframework

Robot Framework - 我在设置部分有参数化资源路径的问题。目前我在我的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,错误仍然存​​在。 有趣的是,如果我运行测试用例,它将成功运行。但是,在测试用例中,objectmap中使用的变量有一个红色错误行。每个变量都有错误

  

使用变量,但未定义。

3 个答案:

答案 0 :(得分:1)

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

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

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

test.robot

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

*** Test Cases ***

resource.robot

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

ObjectStore.robot

[EMPTY]

RED.xml RED.xml variable mapping

然后确保test.robot

中没有显示错误

enter image description here

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

答案 1 :(得分:0)

我找到了解决问题的方法。我插入了一个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} 

答案 2 :(得分:0)

有点晚了(我一定是在SO上错过了这个问题),让我总结一下上面的问题。 RED不知道变量的值。变量可以在执行期间修改(通过testlogic,套件设置,变量文件等),因此RED不能采用来自Variable部分的任何值分配来解析参数化路径。这同样适用于系统变量,例如$ {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

警告"某些内容在Project / Workspace"之外 - 一个警告,可以帮助理解为什么测试在从不同机器上的存储库签出时不起作用。任何错误/警告都可以在Windows-> Preferences-> Robot Framework - >中更改。错误/警告 帮助主题:http://nokia.github.io/RED/help/user_guide/validation/validation_preferences.html

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

RED PM