2015-05-10 32 views
1

继机器人框架测试用例运行机器人框架测试用例,并行是做:如何在两个不同的设备

STEP 1:远程登录到HOST1并做形象升级

第二步:用户登录到HOST2和做图像升级

***Settings*** 

Library Telnet 

*** Variables *** 

${HOST1}    1.1.1.1 
${HOST2}    1.1.1.2 
${USERNAME}    admin 
${PASSWORD}    test 

***Test Cases*** 

testcase1 

    Open Connection   ${HOST1} 
    Login ${USERNAME}  ${PASSWORD} 
    Write     enable 
    Write     upgrade tftp://10.1.1.1/image.img 
    ${data1}    Read Until Regexp  .*# 
    Open Connection   ${HOST2} 
    Login ${USERNAME}  ${PASSWORD} 
    Write     enable 
    Write     upgrade tftp://10.1.1.1/image.img 
    ${data1}    Read Until Regexp  .*# 

这工作正常。但问题是,只有当HOST1升级完成时,我才能够将映像升级到HOST2。但我想在两台机器上并行进行映像升级。

有没有办法在后台运行HOST1镜像升级并启动HOST2镜像升级?

请指导我。

回答

1

一个简单的技巧就是使用轮询。

*** Test Cases *** 
testcase1 
    Set Default Configuration    prompt=$ 
    Open Connection       ${HOST1}  alias=${HOST1} 
    Login         ${USERNAME} ${PASSWORD} 
    Log          start downloading ${HOST1} 
    Write         wget http://huge_file 
    Open Connection       ${HOST2}  alias=${HOST2} 
    Login         ${USERNAME} ${PASSWORD} 
    Log start downloading ${HOST2} 
    Write         wget http://small_file 
    # start polling for 2 min every 10 sec 
    Wait Until Keyword Succeeds    120 sec  10 sec isPrompt 
    File Should Exist      huge_file 
    File Should Exist      small file 
    Close All Connections 

*** Keywords *** 
isPrompt 
    Switch Connection ${HOST1} 
    ${passed1}   Run Keyword And Return Status Read Until Prompt 
    Switch Connection ${HOST2} 
    ${passed2}   Run Keyword And Return Status Read Until Prompt 
    ${return}   Set Variable If     ${passed1}==${True} and {passed2}==${True} ${True} ${False} 
    # keyword only succeeds if both connections have prompt again 
    Should Be True  ${return} 

应该也可以使用一直读到的正则表达式代替读直到提示

+0

仍然升级不会并行发生。你给出的想法是使用轮询和提示立即得到结果。这是个好主意。但我的问题是我需要同时运行两个升级。有任何线索吗? – rcubefather

+0

只要没有达到结果,这个想法就是运行到每个“Read Until ...”的超时。 在我的示例中,下载是并行启动的。 –

+0

此后将发生以下情况: 每10秒轮询 connection_1(正在下载):等待提示 - > 3秒后超时 - >已过期1 =假; connection_2(完成):等待提示 - >通过2 =真 ==>关键字isPrompt不成功; 重复,直到通过1&通过2为真或2分钟超时。 也许你必须改变你的超时值到更短的时间。 –

1

一个选项是: 实现一个壳或蝙蝠脚本在同一时间执行测试用例。这意味着几个机器人框架进程正在同时运行。然后合并输出并生成日志。

对于每个连接,您可以为每个连接定义两个变量文件。

***Settings*** 

Library Telnet 

*** Variables *** 
${HOST}    1.1.1.1 
${USERNAME}    admin 
${PASSWORD}    test 

***Test Cases*** 
testcase1 

    Open Connection   ${HOST} 
    Login ${USERNAME}  ${PASSWORD} 
    Write     enable 
    Write     upgrade tftp://${HOST}/image.img 
    ${data1}    Read Until Regexp .*# 

还有一种工具可以执行并行的机器人测试用例。 https://github.com/mkorpela/pabot

相关问题