使用机器人框架与"nc"工具进行简单的测试连接?



我正在尝试在同一网络中的两个IP地址之间在Robotframework中执行一个简单的测试连接测试。我想要实现的是:

  1. 在一侧 执行命令回显你好 |NC -L 51111
  2. 要捕获另一条"您好"消息: 执行命令 'nc ip 51111'

,使用标准网猫工具。

为此,我运行Test Script.robot:

Library                Process
Library                SSHLibrary
Suite Setup            Open Connection And Log In
Suite Teardown         Close All Connections
*** Variables ***
${HOST}                ip.my.dev.vm
${USERNAME}            user 
${PASSWORD}            password
${HOST_PDG}            ip.server1
${HOST_IDPF}           ip.server2
*** Test Cases ***
Step 1 Connect Server1 and send Hello to space 
Open Connection And Log In Server1
${output}=          Execute Command    'echo Hello | nc -l 51111'
Should Not Be Equal    ${output}         Hello
Step 2 Connect to Server2 and retrieve Hello 
Open Connection And Log In Server2
${output}=         Execute Command    'nc ip.server2 51111'
Should Be Equal    ${output}       Hello  
*** Keywords ***
Open Connection And Log In
Open Connection     ${HOST}
Login               ${USERNAME}        ${PASSWORD}  
Open Connection And Log In Server1
Open Connection     ${HOST_PDG}
Login               ${USERNAME}        ${PASSWORD}
Open Connection And Log In Server2
Open Connection     ${HOST_IDPF}
Login               ${USERNAME}        ${PASSWORD}

此脚本在第一个通过的测试步骤后停止,并且从Server2中我永远无法捕获此Hello消息。

使用 nc 工具在命令行上进行相同的测试可以完美运行。

  1. ssh 服务器1
  2. 回声 你好 | nc -l 51111
  3. ssh 服务器2
  4. NC IP服务器2 51111 (请参阅您好消息(

在机器人框架上做这件事有什么问题?

提前谢谢你!

您面临的问题是因为机器人框架执行是串行的,而您的目标意味着并行性 - 在 Server1 上运行netcat服务器后,您希望从 Server2 并行连接到它。

这是您手动执行此操作时正在执行的操作,但这不是在RF情况下发生的情况:在框架中,您已经运行了测试1,它完成了步骤,并完成了(有一些通过/失败状态,但现在这并不重要(。完成后,服务未运行;因此,当您在测试 2 中尝试连接到它时 - 它理所当然地失败了。

以下是您可以执行的操作 - 并行执行两个步骤(启动服务和连接到它(。最简单的方法是在相同的情况下;为了使服务在后台运行,您不必使用Execute Command- 它等待其目标完成,而是立即返回在后台启动它的启动命令。
它的用法略有不同,在获取输出和与之通信方面,您可以在文档中阅读方法。

...我发现...

在不对原始脚本进行太多更改的情况下,如果删除两个命令周围的引号,并且在侦听器端使用Start Command而不是Execute Command(正如 Todor 建议的那样,谢谢!(,脚本将按原样工作,给出正确的结果。

最新更新