关于RobotFramework SSLLibrary中预期的超时



我是Robot Framework的新手。

我正在编写一个测试程序,期望

连接到另一台计算机执行映像更新(这将导致单元关闭所有服务并重新启动自身(重新连接到设备运行一个返回已知字符串的命令。

这一切都应该发生在__init__.机器人模块内

我注意到,我必须以同步或阻塞的方式调用升级过程,就像一样

Execute Command sysupgrade upgrade.img

这成功地升级了单元,但robotframework脚本在执行命令时挂起。我怀疑这是有效的,因为它使ssh会话保持足够长的时间,以便升级到达一个关键节点,在该节点,会话被远程主机关闭,主机预期会这样,升级会继续,并且这不会导致升级失败。

但是远程主机似乎关闭了ssh会话,使得robotframework脚本无法检测到它,并且脚本无限期挂起。

为了解决这个问题,我试着调用远程命令,比如

Execute Command sysupgrade upgrade.img &

但随后更新失败,因为连接似乎已断开,导致升级过程未完成。

如果我像这样执行

Execute Command    sysupgrade upgrade.img &
Sleep    600

然后这也失败了,由于某种原因我无法推断。

但是,如果我像这样调用

Execute Command sysupgrade upgrade.img timeout=600

该命令成功更新了单元,在设置的超时时间后,robotframework脚本确实恢复了,但由于它已经到达超时时间,测试失败了(从robotframeworks的角度来看(。

但这实际上是一个预期的失败,应该被忽略。然后,脚本的其余部分将重新连接到主机,并继续进行剩余的测试

有没有一种方法可以将超时情况视为非致命情况?

这是如上所述的代码,__init__.robot初始化模块预计将执行升级,然后重新连接,剩下其他xyz.robot文件将运行并继续测试应用程序。

__init__.robot文件:

*** Settings ***
| Library | OperatingSystem |
| Library | SSHLibrary |
Suite Setup ValidationInit
Suite Teardown ValidationTeardown
*** Keywords ***
ValidationInit
Enable SSH Logging validation.log
Open Connection ${host}
Login ${username} ${password}
# Upload the firmware to the unit.
Put File    ${firmware}    upgrade.img    scp=ALL
# Perform firmware upgrade on the unit.
log     "Launch upgrade on unit"
Execute Command    sysupgrade upgrade.img    timeout=600
log     "Restart comms"
Close All Connections
Open Connection    ${host}
Login              ${username}    ${password}
ValidationTeardown
Close All Connections
log “End tests”

这应该有效:

Comment Change ssh client timeout configuration set client configuration timeout=600 Comment "Launch upgrade on unit" SSHLibrary.Write sysupgrade upgrade.img SSHLibrary.Read Until expectedResult Close All Connections

您可以使用"Run Keyword And Ignore Error"来忽略故障图。或者,如果您不关心执行结果,我认为您应该使用write命令。

相关内容

  • 没有找到相关文章

最新更新