Robotframework中的简单测试用例

时间:2018-08-11 13:42:57

标签: robotframework

我开始学习如何使用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

如何在当前生成的报告中显示标准输出,目前在报告中看不到输出。

谢谢

1 个答案:

答案 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后还需要两个或更多空格。