Robot Framework(九):如何执行测试
目录
Robot Framework测试用例通过命令行执行。默认情况下,测试结果是包含3个文件:HTML格式的输出文件、HTML 报告文件和日志文件,输出文件还可以使用rebot工具进行后处理。
测试执行
命令行执行
语法:
robot [options] data_sources
python -m robot [options] data_sources
一般情况下直接使用robot命令执行脚本即可。第2种是python下以模块的形式执行测试脚本,后续我们都以第1种情况为例进行说明。
指定执行的测试数据
Robot Framework的测试用例是以文件和目录的形式组织的,我们也可以根据实际需要执行指定的文件,比如只想调试某个脚本是否正确,没有必要把所有的都执行一遍,这时就可以指定要执行的文件。
文件路径可以是绝对路径或者相对路径(相对于执行测试的目录)
robot scalar.robot
robot F:\pythonTest\robot\demos\rf_demo1\scalar.robot
一条命令中执行多个文件,文件之间用空格分割:
robot scalar.robot templates.robot
使用命令行选项
Robot Framework提供了许多命令行选项,可用于控制测试用例的执行方式和测试结果的输出。可以使用robot --help查看支持的选项, 只介绍几个常用的选项。
--name/-N:指定测试套件的名称
robot --name Example scalar.robot templates.robot
如果不用--name参数的话,log中测试套件的名称是多个测试套件名称拼接在一起,这样看起来还简单一些
-t:指定测试用例的名称
比如在调试脚本或者回归的过程中,只想运行某些出错的测试case的话,在IDE工具中可以勾选指定的项,但是在命令行下需要用-t参数指定测试用例的名称。注意:如果测试用例名之间有空格的话那么-t指定的时候要用下划线_代替空格,否则会报错
示例:test.robot:
*** Test Cases ***
Test1 Example
Log Test1
Test2 Example
Log Many Hello robot
执行结果:robot -t Test1_Example test.robot
模糊匹配模式
支持类似正则的匹配,规则如下:
- * :匹配任意字符和空字符;
- ? :匹配单个字符;
- []:匹配括号中的任意一个字符,比如:[abc]匹配abc中的任何一个;
- [!abc] :匹配除了abc之外的字符;
- [a-z]:匹配a-z之间任意一个字符;
- [!a-z] :匹配除了a-z之间的任意一个字符
以上通配符匹配字母时不区分大小写,例如:
--test Example* # 匹配以 'Example'开头的测试文件名.(不区分大小写)
--test Example[1-2] # 匹配'Example1' 或 'Example2'(不区分大小写)
--include f?? # 匹配以f或F开头并且3个字符长度测试文件名
测试结果
命令行输出结果
所有执行的测试套件和测试用例以及它们的状态都会实时显示在那里。下面的示例显示了执行只有两个测试用例的简单测试套件的输出:
=========================================================
Example test suite
=========================================================
First test :: Possible test documentation | PASS |
------------------------------------------------------------------------------
Second test | FAIL |
Error message is displayed here
=========================================================
Example test suite | FAIL |
2 critical tests, 1 passed, 1 failed
2 tests total, 1 passed, 1 failed
=========================================================
Output: /path/to/output.xml
Report: /path/to/report.html
Log: /path/to/log.html
生成的输出文件
命令行输出非常有限,通常需要单独的输出文件来查看测试结果。如上图所示,测试完毕后会生成3个文件,分别是output,log和report。
output是xml格式,包含测试执行的所有信息。
log是html格式,一个继承图表,展示了测试集合,测试用例和关键字的细节;
report也是html格式,是对测试结果的一个概括性报告,如果同时生成log文件的话,具体的测试项可以链接到log文件中查看。所有执行成功的话背景色是绿色,失败的话背景色是红色,如下所示:
执行成功:
执行失败:
以上文件默认生成在测试脚本所在的目录下,如果想改变输出位置的话可以使用以下命令行参数:
--outputdir (-d):输出到指定的路径
--output (-o) :设定output文件的输出路径
--log (-l):设定log文件的输出路径
--report (-r)::设定log文件的输出路径
-output NONE --report NONE --log NONE:不生成任何日志文件
robot -d f:\ scalar.robot:
robot -o f:\output scalar.robot
错误或警告信息
测试执行期间,可能会出现意外问题,例如无法导入库或资源文件或使用的关键字不存在 。根据严重程度,此类问题被归类为错误或警告,并将它们写入控制台(使用标准错误流),显示在日志文件中的单独“ 测试执行错误”部分,并写入Robot Framework自己的系统日志。下面的示例说明了日志文件中的错误和警告的外观。
20090322 19:58:42.528 |
ERROR |
Error in file '/home/robot/tests.robot' in table 'Setting' in element on row 2: Resource file 'resource.robot' does not exist |
20090322 19:58:43.931 |
WARN |
Keyword 'SomeLibrary.Example Keyword' is deprecated. Use keyword `Other Keyword` instead. |
获取版本和帮助信息
--help(-h):获取robot可用的命令行选项。
--version:获取robot的版本信息
创建启动脚本
测试用例通常由持续集成系统或其他情况自动执行。这时就需要有一个脚本用于启动测试执行,并且还可能以某种方式用于后处理输出。即使在手动运行测试时,在需要大量命令行选项或设置测试环境很复杂的情况下类似的脚本也很有用。
在类UNIX环境中,使用shell脚本,Windows环境下使用批处理文件。
脚本示例一:使用不同的浏览器执行相同的Web测试,然后将结果合并。
shell脚本:
#!/bin/bash
robot --variable BROWSER:Firefox --name Firefox --log none --report none --output out/fx.xml login
robot --variable BROWSER:IE --name IE --log none --report none --output out/ie.xml login
rebot --name Login --outputdir out --output login.xml out/fx.xml out/ie.xml
批处理:
@echo off
call robot --variable BROWSER:Firefox --name Firefox --log none --report none --output out\fx.xml login
call robot --variable BROWSER:IE --name IE --log none --report none --output out\ie.xml login
call rebot --name Login --outputdir out --output login.xml out\fx.xml out\ie.xml
case乱序执行
random:test
某个测试集中的测试用例以随机的顺序执行。
random:suite
测试集以随机顺序执行,但单个测试集中的用例顺序执行。
random:all
测试集和测试用例都以随机顺序执行。
例如:
pybot --runmode random:test my_test.txt