![04befe7a1d1c132f85afe766c9938eac.png](https://i-blog.csdnimg.cn/blog_migrate/ef37e62e5b6feb1fc017a024ad1a3b70.jpeg)
原作者:逆之時間軸
原出处:CSDN
原文链接: https:// blog.csdn.net/yydoraemo n/article/details/13847781
版权声明:本文为博主原创文章,转载请附上博文链接!
1、介绍
1.1、介绍Robot
Robot Framework是一个基于关键字驱动的自动化测试框架。通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例
Robot Framework官方网站:http://robotframework.org/
1.2、安装
1.2.1、Robot Framework
Robot Framework支持Python和Jython,本文档针对ubuntu下Python进行讲解
下载地址:https://pypi.python.org/pypi/robotframework,下载最新版本安装包如果是windows可直接下载exe安装包,ubuntu可使用tar.gz包进行源码安装,当然windows也支持源码安装
下载完后解压tar包并进入文件夹内执行sudo pythonsetup.py install便可完成安装。安装完成后可在终端执行pybot--version测试是否安装成功
1.2.2、Robot Framework IDE(RIDE)
RIDE是Robot的第三方测试用例编辑器,可编辑用例,编辑关键字等并生成HTML,TXT等格式的文件。同时RIDE可直接可进行测试执行。RIDE是基于wxPython进行开发,所以安装RIDE前需要先行安装wxPython,其官方网站为:http://www.wxpython.org/
windwos下可字节下载exe包进行安装
ubuntu下通过终端命令行方式进行安装,方法如下:
1,curl http://apt.wxwidgets.org/key.asc | sudo apt-key add –
2,修改/etc/apt/sources.list文件,追加如下内容
deb http://apt.wxwidgets.org/ gutsy-wx main
deb-src http://apt.wxwidgets.org/ gutsy-wx main
3,sudo apt-get update
4,sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n
5,sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n libwxgtk2.8-dev libgtk2.0-dev
完成wxPython安装后可进行RIDE安装
下载地址:http://code.google.com/p/robotframework-ride/
安装方法同robot安装包
1.2.3、官方快速入门和example
下载入门手册:robotframework-quickstart-20090113.zip并解压,进入文件夹后可看见一个quickstart.html,打开该文件可看到官方的快速入门的文档。同时在终端中进入到该文件夹执行命令pybot
quickstart.html便可看到robot执行了一系列测试。这种帮助文档就是example本身的例子并不多见,其原理就是robot可识别html页面中的表格,只要表格的内容和robot执行用例的语法,便可成功执行用例。执行完毕后可看见当前文件夹下生成了report文件,可查看这份报告
2、简单使用Robot Framework
2.1、Hello World
在/home下建立demo用的文件夹例如名为robot_test。在终端中使用命令ride.py打开RIDE编辑器。点击RIDE菜单栏File->Open
Directory选中robot_test文件夹,然后确定。
![b837ce550683ad1ba15698e07f753536.png](https://i-blog.csdnimg.cn/blog_migrate/27af7c1b781098ae2f1141297254558d.jpeg)
在robot_test目录下新建一个RobotTest.py然后文件内编写python代码,如下
import os
import sys
class RobotTest:
def first_keyword(self):
fp = open("/tmp/robot_fk", "a")
fp.write("this is the first keywordrn")
fp.close()
这样一个TestLib文件就创建完成了,之后在RIDE中创建测试用例:
在RIDE的最上侧菜单栏选择File->New Project后如下
![17a594c6b57193ddb287bc02702d8a7f.png](https://i-blog.csdnimg.cn/blog_migrate/94363348384f29fc890045c77e5e4b38.jpeg)
在右侧编辑框拉开Setting选项如下
![2ecf985a7a8443afb961de3131506939.png](https://i-blog.csdnimg.cn/blog_migrate/21eecf1d71198feed532e52b06e8e2f2.jpeg)
点击Documentation的大文本编辑框,输入一下文本,可输入中文然后保存,便在可在robot_test目录下生成一个robot_test.html的文件可打开查看样式
首先需要加载刚编辑的RobotTest.py这个库,方法为,点击左侧Robot_Test,在右侧找到Library按钮点击,并点击浏览找到RobotTest.py文件
![96eefa90e4965ef0b4613e35247dadf3.png](https://i-blog.csdnimg.cn/blog_migrate/3cd34720bb4b798adf0259c1942b7e8a.jpeg)
然后添加用例
在RIDE中右键点击Robot_Test选择New Test Case,输入用例名,比如first case
![5bcaacabd09320573ac8b77b5213f51f.png](https://i-blog.csdnimg.cn/blog_migrate/f92ebcb89c0ff971fa9a2ad16b28a9f8.png)
后点击first case便可看到用例编辑框,在下面的表格中加入第一个关键字first keyword如下
![eb6a22f1a2fef9646cda63849d13924f.png](https://i-blog.csdnimg.cn/blog_migrate/03b39631b6946a9ff2b5a4fbbb1971f2.jpeg)
这样一条简单的用例就完成了
用例执行:
点击RIDE最上测得按钮如图
![ef8006035ce37a27acda137841c39dbd.png](https://i-blog.csdnimg.cn/blog_migrate/7fa077a2d3fdaa16a9f1897ece805005.jpeg)
便可看到RIDE开始执行测试用例,执行完毕后如下图
![c2bb2eb0dfc996dab20b798c038db373.png](https://i-blog.csdnimg.cn/blog_migrate/7c3cec42ff13dd9e943106350a5305ca.jpeg)
之后进入/tmp目录下看到一个robot_fk文件,可打开看到一串字符this isthe first keyword,这意味着我们的测试成功了。
2.2、Robot工作原理简述
Robot的测试用例和配置使用HTML,TXT等格式文件进行编辑,html是比较常用的一种格式,通过html绘制的表格形式来编辑用例可阅读性较高。
Robot通过识别html表格中的表头来确定该表格的配置是做合使用,例如Settings用来配置资源库,Test Cases用来编辑测试用例,Variables用来配置默认的变量等等。
每个robot工程开始工作时会通过Settings加载相关的资源,通常为TestLib,或者导入其他的配置文件等等,然后找到所有的Test Cases表格并顺序执行每个case。每个测试用例的每个步骤通常都是有一个关键字来执行操作该步骤。Robot会去Settings中指定的library中寻找该关键字,如果找到则执行该关键字所对应的代码,如果在Lib代码中无法找到该关键字,则寻找html的表中表头为Keywords的表格,如果也无法找到则会报错。执行测试用例时每个步骤都执行完且没有报错,则认为该条用例为pass。
3、Robot Framework详解
3.1、Robot的格式
官方文档所描述的配置如下图
![c8a3ccbd210dc4e3fcc48797303be431.png](https://i-blog.csdnimg.cn/blog_migrate/d6f89b3c1e93a5655fab13aa72324d40.jpeg)
而是用RIDE编辑所生成的html文件格式如下:
![2b842ae486823a225aeab6b4cdf29285.png](https://i-blog.csdnimg.cn/blog_migrate/6e4c751afaf6b52a89c4a8b9d06f9bfc.jpeg)
如果使用其他html编辑器来编辑robot相关配置,建议编辑成官方说明中的标准样式。
3.2、TestLib
TestLib是robot框架关键字部分的核心,它的作用就是用来封装底层关键字。Robot自带了一部分非常常用的TestLib如XML,String等,也有别人开发的第三方的TestLib比如web页面测试相关,Database相关,在robot中只需要正确导入这些库,那么就可以使用这些lib中封装的关键字。而在自动化测试开发中,最重要的过程就是开发出优秀的TestLib,封装出复用性强,清晰明了的关键字。
TestLib编写规则:
1,TestLib是一个python文件,里面写的python代码,所以TestLib通常是.py结尾的。
2,TestLib只且只有一个class,并且该class的名字和TestLib文件名相同。如2.1介绍的RobotTest.py中定义的class的名字也是RobotTest
3,class中所定义的函数便是robot中的底层关键字,所以一些私有函数,不打算作为关键字对外开放的建议将函数名以“__”开头
4,class中函数名定义通常为defabc_def_ghi(self, xxx):这样的格式,单词之间使用下划线分隔,这样的定义的函数名在编辑测试用例时可直接使用关键字abc
def ghi或者Abc Def Ghi也是允许的。所以class中定义函数的时候建议只使用小写字母和下划线的方式,这也符合python的编程规范。
5,其他规范符合python的规范,比如使用os,sys等系统函数该import的就还是要import
符合上述条件的TestLib就可以被robot使用。读者可以自行建立一个TestLib并实现一两个关键字并在RIDE中导入,导入方法参考2.1的例子,导入后如果RIDE中该库颜色显示是红色的,说明很有可能该TestLib有点问题,最直接的问题就是class名和文件名不同导致找不到该Lib,或者头部import某库就出错了。
3.3、Robot的主配置(html)
凡是使用RIDE编辑的html无需太关心格式问题,所以具体跟表格格式相关的问题不再赘述,现介绍一些常用的配置,这些配置通常在RIDE中都能找到,只需要填写内容即可。以下描述还是以2.1节中的example为例
3.3.1、Setting
点击RIDE中的Robot Test看到右侧的Settings打开可看到较多配置
![9c25437131fc3b530ef8f204b0466dcd.png](https://i-blog.csdnimg.cn/blog_migrate/585097e3cd3038e9ca09c9c7d81924ca.jpeg)
3.3.1.1、Documentation
描述文档,通常用来描述该html的作用,类似帮助文档或者说明
![459789ae8abe941fcf175cf9cc2ceeb4.png](https://i-blog.csdnimg.cn/blog_migrate/b9a2fe5cfc5165bab1651592244c5a1d.png)
3.3.1.2、Suite Setup
每个Test Suite启动时执行的动作,用法同测试用例中的关键字
![0cdaf331027d7bbbc9f9a41806eaa63c.png](https://i-blog.csdnimg.cn/blog_migrate/c66f87b01d54e89f67b609b7fcafb9e5.jpeg)
3.3.1.3、Suite Teardown
每个Test Suite结束的时候执行的动作,用法同测试用例中的关键字。
3.3.1.4、Test Setup
每个Test Case启动时执行的动作,用法同测试用例中的关键字。如果在某个具体的Test case中指定了Setup则执行case里的setup而不执行setting里的Test
Setup
3.3.1.5、Test Teardown
每个Test Case结束的时候执行的动作,用法同测试用例中的关键字。同样case里的Teardown会将setting里Test
Teardown覆写。
3.3.1.6、Test Timeout
用例超时时间,超过该时间还未执行完毕的用例将被强制退出。单位为秒,也可以写成如下形式,用RIDE输入的时间自动会转成如下形式
![3bb1fe7575a956cdaf2133465015a8ba.png](https://i-blog.csdnimg.cn/blog_migrate/30cd8c1a3a8d0e4242dfbdc0ef6bb18e.jpeg)
3.3.1.7、Tags
Tags作为用例的标记,在robot中是非常常用的。在setting中可配置Force Tags和Default
Tags,也可在用例中配置Tag,Tag的作用在后面描述
3.3.1.8、Library
指定TestLib,系统自带的或者已经安装的TestLib可直接输入名字,自己编写的TestLib就需要加入路径,相对路径绝对路径均可,相对的是该html文件的路径
3.3.1.9、Resource
引入一个资源文件。通常一份比较好的robot用例中包含就是跟该用例相关的关键字,用例和一些基本配置等等,如果需要用到很多公共的模块,公共的关键字,这些公共资源通常会编辑成一个独立的html,这样业务相关的html便可引用
3.3.2 、Testcases
本节开始描述如何编写测试用例。
3.3.2.1、编写方法
![045649ac11119016f8625da5439520cd.png](https://i-blog.csdnimg.cn/blog_migrate/66107b2971cdd922da39751a7bb87607.jpeg)
上图是官方的帮助文档中描述的Test Case表格的样式。第一列为用例名,第二例开始往后便是用例的动作。如果该用例不止一个动作那么步骤2的动作要写到步骤1动作的下方,即步骤2的第一列要空出,如下例子
![1965953ff909ed31589300a78e49888f.png](https://i-blog.csdnimg.cn/blog_migrate/bdff0f7f82f4e0e5447d82108336dcc7.jpeg)
两个case均有2个步骤,而robot识别case就通过如果第一列为非空则认为该行是一个新的case。
上的表格缺少表格头,官方的样式表头是第一列是Test Case,第二列是Action,第三列以后的是Argument,事实上不一定所有的case的第二都是Action,有可能的是返回值,有些keyword可能还会返回2个返回值甚至更多,那么在Action之前可能还要占用更多格的空间。RIDE编辑生成的用例表表头只有Test
Cases。所以一般的用例的形式通常为:
![ae375925ee49728c50bb902991c858be.png](https://i-blog.csdnimg.cn/blog_migrate/19cfd896a6e15de822d80ed83e8410bd.png)
3.3.3.2、变量
在编写测试脚本时,每个步骤之间并不是独立的。往往需要前一步骤的输出传入给后一步骤的输入。在代码中可以使用变量来传递这些值,但是如果在表格中编写测试用例,想要传递参数并不是那么容易的事。Robot提供了这样的变量机制,能够在编写用例轻松传递参数。
变量的定义方式为${变量名},通过该方式可定义变量,并给变量赋值,和作为参数传入。举个例子,定义个测试用例名为var case,并且有两个关键字第一个为get
var,有1个返回值,没有输入参数,功能获取var的值。另一个关键字为set var,有1个输入参数,没有返回值,功能设置var值。Var
case的步骤先调用get var获取var然后调用set var并传入该值。如下:
![9abeb840d6aab85268aa67bb0c373a19.png](https://i-blog.csdnimg.cn/blog_migrate/0a75a48cfbda412ccabe6f2c8ea70aac.jpeg)
上述用例中定义了${test_var}这个变量用来取值和赋值。如果作为返回值需要复制,就写在关键字操作前并加入=,如果作为参数传值写在关键字操作后,参数需要注意顺序。
学会使用变量,并知道关键字如何使用,基本就可以编写测试用例了,下面介绍Test case中一些常用的配置。在case中的配置需要使用”[ ]”进行标示
3.3.2.3、Documentition
和setting中的一样,用来做一些注释,描述等等,在robot执行时会把这些内容打印出来
![998dc63047653c332d9495f9b34dff65.png](https://i-blog.csdnimg.cn/blog_migrate/e3da5b99da5b51101845727d4419dbac.jpeg)
3.3.2.4、Setup
当case启动时首先会执行的操作,如果这里定义的Setup则setting中的Test Setup将失效。
![2d6f0eab387863a9cd4c8e9a3d5bf808.png](https://i-blog.csdnimg.cn/blog_migrate/f9449a5ff92b18b425742c3391cb86e0.jpeg)
3.3.2.5、Teardown
当case结束最后会执行的操作,如果在这里定义了Teardown则setting中的Test Teardown将失效
![5bf8daf30500ed65bb8bd6155ed53903.png](https://i-blog.csdnimg.cn/blog_migrate/70cee9d4f448999c57efcb50c41eaf46.jpeg)
3.3.2.6、Timeout
用例超时时间。
3.3.2.7、Tags
和setting中tags一致,用于给用例做标记。
3.3.3、Keyword
Robot作为关键字驱动的测试框架,Keyword是其用例层最核心的内容。TestLib中定义的函数,可作为Keyword在用例编辑时使用。同时用户可自定义Keyword,而用户自定义的Keyword通常是底层TestLib中的Keyword的组合和封装。TestLib中的keyword的功能是最为简单单一的。如果测试用例全部使用Testlib中的keyword那极有可能一个用例包含十几个步骤甚至更多。这样的用例逻辑性和可读性是很差的。阅读用例的人可能只关心某一步骤做什么,并不关心是怎么做的,比如数据处理完的下一步骤是验证结果。验证结果可能需要处理数据库,写文件,解析数据结构等等。这些事应该上层写用例的人可能不关心,或者也不想关心。良好的Keyword封装能够让用例编写更轻松,用例质量也越高
3.3.3.1、Keyword编写方法
官方定义的Keyword表格样式如下
![7427c5968b20d84e15ce2b174355c595.png](https://i-blog.csdnimg.cn/blog_migrate/13dc141da85f9bb5ec0c60d1cf3864fb.jpeg)
和Test case定义方式是一样的。在RIDE中可以如下创建一个Keyword。右键点击Robot Test选择New User Keyword,并取名为my keyword。
![bd5e7db7a1ab2463708dab716a3dfccf.png](https://i-blog.csdnimg.cn/blog_migrate/7b750f08a0c664880543309aba064c92.jpeg)
这里使用2.1中的例子,在my keyword中调用两次first keyword
![2bf6ef0347fe546cfa535b18e9d142ae.png](https://i-blog.csdnimg.cn/blog_migrate/321b66bc52ad54394cb2e6ba7e819c8d.jpeg)
保存后的html样式为
![6e7835f5475430fae5a141bbff1f36ff.png](https://i-blog.csdnimg.cn/blog_migrate/fe706e3e42414ecec199af707ad5778e.jpeg)
然后编辑first case,让它的测试步骤为调用一次my keyword
![ed3cca343a631b233e29d9637fc615e0.png](https://i-blog.csdnimg.cn/blog_migrate/4e79429635316651cd0064aec0a6c235.jpeg)
编辑完成执行first case用例,然后查看/tmp/下的robot_fk文件,每执行一次就会增加两行”this is the first keyword”。
需要注意的是,用户定义的Keyword不能和Testlib中的Keyword重复。由于robot在执行用例时首先TestLib中搜索Keyword,如果用户定义了和TestLib中重复的Keyword,Keyword将无法被执行到。
3.3.3.2、Keyword的输入和输出
如果把一个Keyword当成一个函数,那除了函数处理流程,用户最关心的便是输入和输出。输入便是参数,输出便是Keyword的返回值。下面通过一个例子来说明关键字的输入和输出。首先在2.1中使用的RobotTest.py中增加两个方法,第一个方法名为plus,输入参数2个,功能是返回两个参数的和。另一个方法名为multi,输入参数为3个,功能是返回3个参数的乘积。定义个关键字名字为alg keyword,有3个输入参数,1个返回值,其功能是三个参数两两求和,将3个和求乘积并返回。在RobotTest.py添加如下代码
import os
import sys
class RobotTest:
def first_keyword(self):
fp = open("/tmp/robot_fk", "a")
fp.write("this is the first keywordrn")
fp.close()
def plus(self, arg_a, arg_b):
return int(arg_a) + int(arg_b)
def multi(self, arg_a, arg_b, arg_c):
return int(arg_a) * int(arg_b) * int(arg_c)
在RIDE中新建一个keyword命名为alg keyword。使用[Arguments]声明参数如下所示。
![0c27acfac29bad853a8a6fadc2f5f24b.png](https://i-blog.csdnimg.cn/blog_migrate/f87d670470bf4cb44437ffb6125c35ab.jpeg)
在RIDE中编辑参数的方式为
![27b5c79f1ad8002351ca40903a950f3b.png](https://i-blog.csdnimg.cn/blog_migrate/582b0567cf878446b0350daf8995fa81.jpeg)
然后在alg keyword编辑测试步骤,如下
![49b4852a242dedabf3260bc138b531fe.png](https://i-blog.csdnimg.cn/blog_migrate/74730036c3a4e434c5778dc7f6d72f64.jpeg)
保存后html页面为
![33d206bbe8ce3cea0510b6634c01c04b.png](https://i-blog.csdnimg.cn/blog_migrate/a2c6e1d125ecc958b0e33b1b431f4f86.jpeg)
这里RIDE在生成html页面时为了限制表格列数,将${c}另起一行并在前使用...表示这是与上一行的连接。最后加入[Return]返回${d}的值
![7eda19e35258e0c858c34f7981aea035.png](https://i-blog.csdnimg.cn/blog_migrate/ec8d49ad298b9c47c4710d6890f433f9.jpeg)
在RIDE中在Return Value中添加返回值,完整的keyword编辑如下
![55a96483e8f431542f41252eb72a2805.png](https://i-blog.csdnimg.cn/blog_migrate/897101ad60db9bb33fdb5e75f946cc53.jpeg)
完成Keyword后在RIDE中添加一个测试用例命名为second case,调用alg keyword并传入参数1,2,3,并将返回的值进行打印
![b7938c8b33ea9c0afc09e077cc791ced.png](https://i-blog.csdnimg.cn/blog_migrate/20ab36db4179f6362de19403a13d085c.jpeg)
编辑完后勾选second case并点击按钮执行。
![07377fd21c4c8d898308089692afe56c.png](https://i-blog.csdnimg.cn/blog_migrate/191010d2cfad8450e46d964ba8262f82.jpeg)
执行结果如下
![743688123fdf34fd9645d7a3c16d24c7.png](https://i-blog.csdnimg.cn/blog_migrate/09113b793e7b40a993136667241f9f24.jpeg)
上面的执行结果显示alg keyword在second case里被正确使用了,也返回了正确的值。通过这种函数可以将单一的关键字封装成高级关键字。Keyword也还有其他常用配置
3.3.3.3、Documentation
和setting中的一样,用来做一些注释,描述等等。
![bcd4fd009d565df664c8a3cd73d6f959.png](https://i-blog.csdnimg.cn/blog_migrate/89f8a2ba5ede9df83f2ce9139d93a1be.jpeg)
3.3.3.4、Teardown
关键字执行完成时最后会执行的操作。关键字在执行过程中如果遇到错误便会终止,如果后续操作中有资源释放,这些操作就不会执行,可能会导致系统崩溃,内存泄露等,所以可以在Teardown中加入资源释放的操作。
3.3.4、Variable
Robot可以在case之外单独定义一些变量,这些变量可以设置默认值。这个更像是代码中的全局变量。当有一些公共的配置,在每个测试用例都可能用到,比如ip地址,端口号,默认的用户名和密码等等。全局变量的定义时建议全部使用大写字母。在3.3.3的示例中,second
case使用alg keyword使用了参数1,2,3,这里可以使用全局变量来替换。
首先在RIDE中创建全局变量,在RIDE中右键点击Robot Test选择New Scalar,然后给变量命名并设置默认
![6861f01ae1ad0e2af7d581e6eb3fc46c.png](https://i-blog.csdnimg.cn/blog_migrate/f8f82c49215a2435644d59a0fb270d7c.jpeg)
同样方法再创建两个全局变量,完成后可查看html表格
![8bbcad8fd76e1cdbef09da6c21cd9b94.png](https://i-blog.csdnimg.cn/blog_migrate/e56b29158efc0228f70ce591d3e03bce.jpeg)
之后修改second用,将这三个参数代替原本的1,2,3传入到用例中
![5c662427d4c6f632edcd695640f5e934.png](https://i-blog.csdnimg.cn/blog_migrate/4818c2d64b33e395f7588325c47cc88c.jpeg)
编辑搜图
请点击输入图片描述
之后点击运行查看结果。
4、Robot高级应用
掌握上述Robot应用便可完成大部分测试用例,另外Robot还提供了一些功能更强大的关键字可让用例编写更灵活
4.1、If分支
Robot支持if判决能让用例执行时根据不同情况执行不同操作。If相关的关键字是”Run Keyword If”,”ELSE IF”,”ELSE”
利用3.3.3中创建的plus关键字,创建一个用例调用plus输入两个参数,如果返回的值小于0,则打印loga,大于等0,小于10打印logb,大于等于10打印logc。首先在RobotTest.py里增加三个函数分别打印loga,logb,logc,调用robot中的logger需要导入robot的api包
![613187cb9c7e0c887bfecc19813fb312.png](https://i-blog.csdnimg.cn/blog_migrate/dba35c903353c977e02515d236531e43.jpeg)
然后新建一个用例名为third case之后编辑用例,如下
![268c329c0774e27ac3d91f512ca576f9.png](https://i-blog.csdnimg.cn/blog_migrate/9c732c67d6038f3ed1965b7471359173.jpeg)
之后可以尝试修改plus的参数进行测试查看结果。
If有个比较特殊的地方,如果判断一个变量是否为某个字符串,不能直接用${ret}去判断,需要给${ret}加引号如下:
![12846acc407c4c54ecd91a8f855d4ab9.png](https://i-blog.csdnimg.cn/blog_migrate/5307a86b578900d8930c1a62635def5b.png)
如果不加引号,使用 ${ret} == ‘abc’,假设${ret}的值是qwe,执行时会报错,告诉你qwe这个变量没有定义。这种情况看来,robot将变量的值,当做代码里的变量名处理,所以需要加上引号当字符串处理。这是python的强大之处吧,可以通过字符串转化成一个变量的名字。
4.2、循环
Robot可以使用For循环反复执行一些操作,比较常用的做法是假如某个操作返回列表,而下一步需要分别处理列表里的每个元素,那么需要如下操作:
![01040d1486e304abf3aab47995da1598.png](https://i-blog.csdnimg.cn/blog_migrate/23478ae0555cfb79616d72386bede0b0.jpeg)
使用:FOR 和IN便可遍历列表中的元素,不过需要注意的是使用FOR遍历时需要将变量通过@转换成一个列表,否则无法正确遍历。遍历过程中可通过关键字”
Exit For Loop”终止循环。FOR循环也支持多种方式,比如IN RANGE可以设置遍历次数,或者直接在某几项元素中遍历,详细可以看帮助文档for loop一节
http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.1#for-loops
4.3、Tags
之前提到过Tags的概念,是用于给用例做标记。用户可以在setting中设置force tags和default tags,也可以在用例中使用[Tags]来给用例标记。Tags最直接的应用就是,可以有选择的执行测试用例。比如有10个用例,其中5个用例使用[Tags]标记为group_a,另外5个标记为group_b。当使用pybot执行用例时假如加上参数--includegroup_a那么robot只会执行有group_a标记的用例,如果使--excludegroup_a那么robot除了group_a的用例不执行,其他都执行,并且一个用例可以加多个tags。在版本测试中,可以通过给用例增加tags,比如某个产品有100个用例,1.0版本需要测试的用例都加上1.0的tags,1.1的版本需要测试用例都加上1.1的tags,这样在执行用例时就可以通过tags来区分版本,很方便。
在setting中可以设置Default Tags和Force Tags。使用这两个配置后可以不用单独给每个用例增加Tags,使用这些配置会让用例增加哪些Tags,请看
http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.1#tagging-test-cases
上述链接中描述了Force Tags,Default Tags和用例自身的Tags是如何并存的。
4.4、pybot
pybot是robot的执行程序,事实上RIDE执行用例也是利用pybot,所以了解pybot的使用方法很重要。
最简单的用例执行就是pybot xxx,其中xxx就是robot的资源文件。就像1.2.3中的quickstart.html。使用该命令就可执行测试。通过pybot--help可以看到帮助手册。常用的如--include,--exclude,--argumentfile,--listener,--variable,还可以设置日志输出的路径等,等用户需要使用时可查看帮助