我开始学习如何使用robotframework进行测试 我创建了以下测试用例,以在本地linux主机上执行。
*** Settings ***
Library Process
Suite Teardown Terminate All Processes kill=True
*** Test Cases ***
${result} = Run Process ping 1.1.1.1 -c 1 shell=True stdout=/home/user/stdout.txt
Log all output: ${result.stdout}
Should Contain ${result.stdout} 64 bytes from 1.1.1.1*
当我执行此测试用例时,我会在终端中进行以下操作:
➜ ~ robot firstlinux.robot
==============================================================================
Firstlinux
==============================================================================
${result} = | PASS |
------------------------------------------------------------------------------
Log | FAIL |
No keyword with name 'all output: ${result.stdout}' found.
------------------------------------------------------------------------------
Should Contain | FAIL |
No keyword with name '64 bytes from 1.1.1.1*' found.
------------------------------------------------------------------------------
Firstlinux | FAIL |
3 critical tests, 1 passed, 2 failed
3 tests total, 1 passed, 2 failed
==============================================================================
Output: /home/user/output.xml
Log: /home/user/log.html
Report: /home/user/report.html
我如何通过此测试,我正在检查标准输出,并确保它具有从ping命令输出的字符串,但看起来好像机械手未对此进行检测。我可以看到已经创建了一个stdout.txt文件,该文件的输出结果为:
➜ ~ ping 1.1.1.1 -c 1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=55 time=30.5 ms
--- 1.1.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 30.565/30.565/30.565/0.000 ms
如何在当前生成的报告中显示标准输出,目前在报告中看不到输出。
谢谢
答案 0 :(得分:2)
您的问题是您没有在测试案例中正确缩进关键字。机器人认为左边距的任何内容都是测试用例的名称。
您发布了此代码:
*** Test Cases ***
${result} = Run Process ping 1.1.1.1 -c 1 shell=True stdout=/home/user/stdout.txt
Log all output: ${result.stdout}
Should Contain ${result.stdout} 64 bytes from 1.1.1.1*
在上面,机器人认为第一个测试用例名为${result}
。它认为Log
是第二个测试用例的名称,而Should Contain
是第三个测试用例的名称。
这些名称之后的单词被认为是关键词。这就是为什么它抱怨all output: ${result.stdout}
的原因,因为那是您命名为Log
的“测试用例”的第一个关键字。
相反,您需要给测试用例命名,然后缩进所有这些语句。例如,如果您想将此测试称为“ Ping测试”,则可以这样做:
*** Test Cases ***
Ping test
${result} = Run Process ping 1.1.1.1 -c 1 shell=True stdout=/home/user/stdout.txt
Log all output: ${result.stdout}
Should Contain ${result.stdout} 64 bytes from 1.1.1.1*
注意:Run Process
后还需要两个或更多空格。