2017-10-14 18 views
0

Robot Framework - 我在设置部分有参数化资源路径的问题。目前,我在我的硒项目的文件中有对象存储库并将其保存为ObjectMap.Robot file。 OR文件放置在项目中。我的目标是将ObjectMap.Robot放在远程访问它。机器人框架:在参数化设置中的资源路径时出现的问题

目前我已经在ConfigVariables.robot

*** Variables *** 

${DataFilePath} /Sample/DataFiles/ 
${OR_PATH} \\\\AIX2UB333/Resources/ObjectMap/ 

的$ {} OR_PATH定义的变量不断变化及存取或文件在我的关键字的文件,我已经设置如下我的设置。

*** Settings *** 

Resource ../Resources/ConfigurationFiles/ConfigVariables.robot 
Resource ${OR_PATH}/ObjectMap.robot 

问题:错误显示为

进口名称/路径 '$ {} OR_PATH /ObjectMap.robot' 是参数。 某些使用的参数无法解析。使用变量映射在 red.xml的参数解析

尝试添加到red.xml,错误仍然存​​在。 有趣的是,如果我运行测试用例,它会成功运行。但是从测试用例中使用的变量在测试用例中有一个红色的错误行。每个变量都有错误

使用变量,但未定义。

+0

你只是问在RED编辑器中如何消除错误? –

+0

错误显示在Resource $ {OR_PATH} /ObjectMap.robot和ObjectMap.robot中定义的所有变量中。基本上想知道如何在资源路径中使用变量 – Dani

+0

测试是否在红色之外运行? –

回答

1

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

在我看来,您的设置中的某些内容对于项目变量映射是不正确的。请通过从市场更新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 *** 

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以获得您寻求的灵活性,而无需在从源代码存储库获取文件后修改文件。

+0

现在我得到一个错误,当我使用代码时,Path'D:/path/ObjectMap.robot'指向工作空间之外的位置。 $ {}或/ObjectStore.robot。 D:/路径是作为测试目的来查看外部位置 – Dani

+0

通常,当我有一个外部实现的文件时,我在工作区内保留一个模板,并使用它在VariableMapping中引用它。然后在运行时指定外部实现。话虽如此,但可以说这是一个警告,而不是一个错误。如果你觉得这样,请在GitHub上登录一个问题。 –

0

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

有点晚了(我必须错过了上所以这个问题),让我总结一下上述问题。 RED不知道变量的值。变量可以在执行过程中进行修改(通过testlogic,套件设置,变量文件等),所以来自变量部分的任何赋值都不能由RED来解析参数化路径。这同样适用于系统变量,例如$ {EXECDIR},这些变量可以根据您在何处启动机器人执行以及如何构建机器人命令进行更改。

在另一种情况下,基于输入参数(例如要用Robot测试的软件的版本或类型)的CI作业修改路径中的变量以使用适用于该版本或类型的软件的适当库或资源。如果没有虚拟机机制,测试人员必须临时更改包含参数化导入的套件才能使用正确的导入(诺基亚的真实世界场景和red.xml中的虚拟机的原因)。

因此,对于任何具有路径中变量的导入,RED假定USER必须指定在编辑阶段使用的临时有效值。

这是red.xml中变量映射的原因 - 允许指定变量的值,因此可以解析任何路径,从而允许导入文件。

也有在红帮的条目(在应用程序和在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

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

RED PM