Robot Framework 的命令格式如下:
robot [options] data_sources
#注意:options 是 RF命令的选项, 可以为空
常用options选项 :
--pythonpath(-P) 指定python模块搜索路径 --name 指定本次测试名称 -test(-t) 指定执行的测试用例名称 --suite(-s) 指定测试套件 --output(-o) file(xml文件) 指定文件输出的文件名 --outputdir(-d) 目录 执行文件输出目录 --variable(-v) <name:value> 设置运行时的变量 --varialbefile(-V) <path:args> 设置运行时的变量(从文件读取) --rerunfailed(-R) <outputxml_file> 设置重新运行失败的用例 --rerunfailedsuites(-S) <outputxml_file> 设置重新运行失败的用例套件 -A 参数文件 指定参数文件 --critical (-c) 指定关键测试用例 --noncritical (-n) 指定不为关键测试用例 --include(-i) foo # 执行包含 标签\'foo\' 的用例. --exclude(-e) foo 执行不包含标签\'foo\' 的用例
data_sources 则是要执行的测试套件文件或者目录的路径。可以是绝对路径,也可以是相对路径,相对与当前shell 的工作目录。例如:
robot test1.robot
robot E:\code\untitled\test1.robot
2.执行规则和命令
如果指定的是测试套件文件,则执行该文件中所有的测试用例。
如果指定的是测试套件目录,则递归执行该目录下包含的所有的子目录里面所有测试套件文件里面的用例。
当然我们也可以指定多个要执行的测试套件文件、目录,甚至用通配符来表示多个测试,如下所示:
#同时执行多个文件文件
robot test1.robot test2.robot
#根据 测试用例名字执行
robot --name 测试用例名字 test2.robot
我们可以通过 --test --suite 来指定执行哪些用例或者套件,而且还支持用通配符的方式
注意:在RF中一个.robot文件称之为一个套件
--test 用户登录 # 执行名为用户登录的用例 --test 用户登录01 --test 用户登录02 # 执行名为用户登录01和用户登录02的用例 --test test* # 执行名字以 test开头 的用例
示例
robot -t case0* test1.robot #模糊匹配,执行test1.robot中所有以case0开头测试用例
robot 账户管理/test1.robot #指定账户管理模块下的套件文件中所有测试用例
如果需要执行某个目录下的所有测试用例则可以这样写:
robot 账户管理 #执行账户管理目录下面的所有测试用例
使用--name参数可以执行本次测试的名字,会在测试报告中产生
robot --pythonpath . --name 冒烟测试 账户管理 #在当前的python路径中执行 账户管理目录下的所有测试用例,指定测试报告的名字为冒烟测试
3.用例命名标准
通常,我们可以在用例后面加上测试管理系统(l例如禅道中的测试用例会自动分配id)的用例id, 就可以根据用例ID,来选择用例了如果我们得到的用例清单 如下
tc00001
tc00002
tc00003
tc00004
tc00005
我们就可以这样执行
robot --pythonpath . --test *tc00001 --test *tc00002 --test *tc00003 --test *tc00004 --test *tc00005 test1.robot
如果有的时候,个数太多,参数岂非太长了?这时候可以使用参数文件
新建参数文件argsfile.txt 参数文件内容如下: --pythonpath . --name 回归测试 --test tc0001 --test tc0002 test1.robot
执行参数文件:
robot -A argsfile
二、用例标签
1.添加Tag(标签)方式:
a.在Setting表里的Force Tags
如果在测试套件文件的Setting表中设置了Force Tags,那么该套件里面所有测试用例都具有了该tag
如果我们在测试套件目录初始化文件的Settings表设置了Force Tags,那么该目录下套件里面所有测试用例都具有了该tag
b.测试用例中的【Tags】配置
需要注意的是,用例中标签只是针对当前这个用例的
c.Setting 表里的Default Tags
如果我们在测试套件文件的Settings表设置了Default Tags,那么该套件里面所有 没有[tags] 设置的测试用例 都具有了该tag。
注意: 测试目录 里面的init.robot 不支持Default Tags
2.根据标签执行用例
-
执行包含标签‘“foo”的用例
--include foo
robot --include hello 账户管理 #执行账户管理目录下。具有hello标签的测试用例
-
执行不包含标签“foo”的用例
--exclude foo
robot --exclude hello 账户管理 #执行账户管理目录下。具有hello标签除外的测试用例
-
执行同时包含标签‘one’,‘web test’的用例
--include oneAND“web test”
robot --include helloANDworld 账户管理 #执行账户管理模块下,同时具有hello和world标签的测试用例
注意:
两个标签和AND之间需要不能有空格,and需要大写,标签不能加引号
-
执行包含标签‘one’或者‘two’的用例
--include oneORtwo
robot --include helloORhi 账户管理 #执行账户管理模块下,具有hello或者hi标签的测试用例
注意:
两个标签和OR之间需要不能有空格,or需要大写,标签不能加引号
-
执行包含标签“one”但是不包含标签“two”的用例
--include oneNOTtwo
robot --include hiNOTworld 账户管理 #执行包含标签hi,但是不含world的用例
注意:
两个标签和NOT之间需要不能有空格,or需要大写,标签不能加引号
-
执行标签格式为W*W的用例
--include W*W
robot --include f*e 账户管理 #执行标签格式为f*e的用例
3.指定关键测试用例
RF执行时,可以指定用例是否是关键测试(critical)用例。如果本次测试中有关键测试用例没有通过,那么整个测试就被视为测试不通过。
注意:
1)如果本次测试中有关键测试用例没有通过,那么整个测试就被视为测试不通过。反之,整个测试就视为通过
2)缺省情况下,robot framework 执行测试时,每个测试用例都被视为关键测试用例
3)可以通过命令参数 --critical(-c)和--noncritical(-n)后面加tag称来指定测试用例是否为关键测试用例
--critical regression 指定只有具有regression标签的用例才是关键用例
--noncritical not_ready 指定不具有not_ready标签的用例是关键用例,其他用例都不是关键用例
--critical ok* --noncritical tbd 指定具有以ok开头的标签且没有以tbd开头的标签的用例都是关键用例,其他用例都不是关键用例
4)通常我们可以在关键用例中打上标签,比如basic表示是关键用例
robot -c haha 账户管理 #只有具有haha标签的测试用例才是关键测试用例,该用例通过不论其他用例通过与否测试都是通过,该用例失败测试则失败
4.指定生成测试报告的存放目录
-d参数后面跟执行生成的测试报告存放路径
robot -d ./report 账户管理 #执行账户管理目录下的所有测试用例,将生成的测试报告存放在项目跟目录下的report目录中