机器人框架:有条件地导入资源

时间:2018-11-19 13:30:35

标签: import frameworks robotframework

是否可以在机器人框架中有条件地导入资源文件?根据测试环境,我想导入具有不同变量的资源文件。可以从机器人CLI读取该变量(例如,机器人--variable VAR:production myTestSuite)

示例:

*** Settings***
Resource    variables_url_environment_a.robot
Resource    variables_url_environment_b.robot

Run keyword if     '${VAR}'=='production'    Import resource    variables_url_environment_b.robot

4 个答案:

答案 0 :(得分:0)

您可以使用具有不同环境变量的Arguments文件,也可以使用类似的

QA.args

    --variable Enviroment:http://sample.url/QA:1111
    --variable USER:John
    --variable PASSWORD:John

然后在您的Robot.test中

*** Test Cases ***
Run Argument File
     Go To  ${Enviroment}
     Login With User   ${USER}  ${PASSWORD}

注意这只是参数文件示例,使用“用用户登录”不是实际关键字

然后执行命令

robot --argumentfile "QA.args" tests

您还可以在命令行上覆盖变量。

robot --argumentfile "QA.args" --variable Enviroment:http://sample.url/Staging:1111 tests

答案 1 :(得分:0)

您可以在导入文件的名称中使用一个变量。 如果您使用的是maven,请从pom.xml文件中设置变量的值。

类似于以下内容,其中$ {PLATFORM}是变量:

*Settings*
Resource    ../platforms/settings_${PLATFORM}.tsv                       
Resource    ../platforms/settings_default.tsv   
*Variables*                         
${PLATFORM} ${ENV_PLATFORM} 

下面是来自POM.xml的代码段

....
<env.platform>Platform1.</env.platform>
....
<configuration>
    <variables>
        <param>ENV_PLATFORM:${env.platform}</param>
    </variables>
</configuration>
....

此外,您还可以通过这种方式从jenkins传递平台的值(如果使用) 使用-Denv.platform = Platform_5

答案 2 :(得分:0)

我认为在条件框架中按您喜欢的方式实现无限可能是不可能的。 但是,您可以做的是代替将鼓励性文件导入为资源,而可以将它们作为-variablefile

传递到测试中

我将如何做?

variables_url_environment_a.py

msg='env a'

variables_url_environment_b.py

msg='env b'

Test.robot

*** Settings ***
*** Variables ***
*** Test Cases ***
print message to console
    print msg
*** Keywords ***
print msg
    log to console  ${msg}

现在,只需创建一个简单的python脚本,即可根据所需的环境运行测试套件。

Python_run_script

import subprocess
var='Production'
command_a='pybot -V variables_url_environment_a.py Test.robot'
command_b='pybot -V variables_url_environment_a.py Test.robot'
if var='Production': 
    procId = subprocess.Popen(command_a,stdout = subprocess.PIPE)
else:
    procId = subprocess.Popen(command_b,stdout = subprocess.PIPE)

有关如何使用--variablefile的更多信息,您还可以在下面的url中引用

https://automationlab0000.wordpress.com/2018/11/20/how-to-pass-python-variable-file-in-robotframework/

答案 3 :(得分:0)

运行关键字,如果'$ {VAR}'=='iOS'导入库a.​​py