我正在尝试在Robotframework中执行同一网络中两个IP地址之间的简单测试连接测试。我想要实现的是:
,使用标准的netcat工具。
为此,我运行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工具在命令行上进行相同的测试非常有效。
通过ROBOT框架执行此操作有什么问题?
提前谢谢!
答案 0 :(得分:1)
您面临的问题是因为robotframework的执行是串行的,而您的目标却是并行性-在Server1上并行运行netcat
服务器后,您要 连接到它从Server2。
这是手动执行操作时要执行的操作,但这不是在RF情况下发生的操作:在框架中,您已经运行了测试1,执行了它的步骤,并完成了(通过了一些pass /失败状态,但现在不重要了)。完成后,该服务未运行;因此在测试2中,您尝试连接到它-理应失败。
这就是您可以做的-使两个步骤(启动服务并连接到它)并行执行。最简单的方法是在相同的情况下。并且要使服务在后台运行,您不必使用Execute Command
-等待其目标完成,而是使用在后台启动服务的Start Command立即返回。
在获取输出并与之通信方面,它的用法有些不同,您可以阅读文档中的内容。
答案 1 :(得分:0)
...我发现... 在不更改原始脚本的情况下,如果删除了两个命令的引号,并且在侦听器侧使用了Start Command而不是Execute Command(如Todor所建议的,谢谢!),脚本将按原样工作是,给出正确的结果。