Robot Framework--04 工作区
转自:http://blog.csdn.net/tulituqi/article/details/7592711
一:Edit
接着前面的来,重新打开我们的RIDE,你会发现之前最后加的Resource的文件res1.txt不见了?实际上在Windows目录里还是存在的。
主要的原因是因为我们没有加载这个Resource。
1、首先看测试套件的。选择测试套件后,看右侧工作区的Edit页
第一行的Source列出了这个TestSuite的路径
接着有个Settings,现在是隐藏了内容的,点击一下会显示出具体的Setting,下一讲专门介绍Settings。
再往下可以大体分成3个部分。
(1):加载外部文件
Add Library :加载测试库,主要是[PYTHON目录]\Lib\site-packages里的测试库
Add Resource:加载资源,主要是你工程相关的资源文件
Add Variables:加载变量文件,这个没怎么用过,以后研究好了再发补丁文章。
(2):定义内部变量
Add Scalar:定义变量
Add List:定义列表型变量
(3):元数据定义
Add Metadata:定义元数据。我是直接翻译的,这个是新增加的部分,大概看了一下作用是在report和log里显示定义好的内容,格式和document一样。
我们先把丢失的资源加上,点击Add Resource,如图
输入完整的文件名:res1.txt,点击OK。
看到这个蓝色的带链接的res1.txt就是加载成功了。如果路径或文件名写错了这里就是黑色的。
这时候再看左边,就会发现我们的res1.txt又出来了,并且之前的位置是在external resource里,现在是在工程下面了。
这是因为我们有一个TestSuite加载了resources,那么他们就是一个project里的了,所以会显示在一起。
2、对于project或者说目录的TestSuite来说,他的工作区Edit页和文件型的TestSuite基本是一样的,区别只在于Settings里。
Resources的工作区Edit其实和TestSuite差别也不大,就是没有了metadata的部分,另外2个部分都有的。
3、对于TestCase和User Keyword来说,右边的工作区Edit页也是基本一样,区别也只是在Settings里。
TestCase的
User Keyword的
可以从图中看到他这边是一个类似于excel的表格一样的区域,这里就是我们的主要写脚本的地方了。
4、在写脚本之前,我们先要加载一下测试库,测试库加到哪里其实都是可以的,因为selenium2lib的初始化设置里是GLOBAL,这样运行的时候会作用在全局。
- ROBOT_LIBRARY_SCOPE = 'GLOBAL'
所以,对于我们这个project来说,加到测试套件和res1.txt上都可以,如果只加了一个,那么在没加测试库的那个下面写的脚本就是黑色的,提示找不到关键字,实际上运行的时候还是会起作用的。
我们先在测试套件来加一下,点击测试套件,在他的工作区点击Add Library,如图
输入Selenium2Library,点击OK。
这样还不算加载成功,成功的标志是按F5键,调出Search Keywords的界面
点击Source后面的下拉列表,在列表里看到Selenium2Library才算是加载成功。如果按照上面的方法进行没有加载成功的话请确认一下你的版本号,至少在我写本文的时候建议先从0.5.2开始装起。
下面就可以写脚本了,先写个open browser运行一下看看。
看到open browser的颜色与众不同了么?RIDE早一些的版本是蓝色,现在他对各种不同的关键字做了区分,可以自定义颜色。现在这个是默认的测试库的关键字颜色。
5、最后run一下吧。
ok,运行成功了,也打开网页了。RIDE的run页面也会显示出运行过程和结果。
细心的朋友会注意到,中间有几个问号,这里应该是显示中文的 测试套件 4个字,但是由于RF默认的编码不支持中文,需要我们修改一下编码。
===RF2.6===——取自之前写的介绍篇里的内容。
===RF2.7===
如果你和我一样升级到2.7了,路径还是在[PythonDir]\Lib\site-packages\robot\utils下,
不过你在encoding.py里找不到这个内容了,因为他们更新了。去哪里了呢?就在他下面一点,名字是encodingsniffer.py。
在文件上点击右键,选择Edit with IDLE 打开文件,像下图一样,把cp437改成cp936保存即可。
更新好了再执行一次脚本吧。
这回显示正常了。
二:Settings
这一讲主要说一下工作区的这些个Settings,一些常用的设置可以帮助我们更好的规划案例的运行。
1、PRJ或者说目录型的TestSuite
=================================
编辑设置:可以点击文本框或者Edit
清除设置:点击Clear
=================================
Documentation:文档,每一项都有。可以给当前的对象加入文档说明。
这里也可以设置简单的格式,两个*中间的文字会被加粗,两个_中间的文字会设为斜体,URL会被转换成可点击的链接
- *Bold* _italic_
- http://www.baidu.com
比如写了上面的内容,就会展示为如下形式:
接下来的Setup和TearDown分别表示启动和停止,也就是你可以在对应的文本框设置一个关键字,那么指定的事件触发的时候就会执行这个关键字。
比如Suite Setup指的是测试套件启动的时候就执行某个关键字。Test Teardown指的就是案例结束的时候执行某个关键字。
为了演示,我随便设置一个关键字吧,如上面所示,我在Suite Setup设置了Sleep | 5sec,表示等待5秒,要注意关键字的参数要使用 | 分隔,如果要使用 | 本身而不是让他起分隔参数的作用,那么就使用 \| 即可。
其他几个也是一样的,这里就不一一举例了。
Force Tags:最后说说这个强制tag标记,这是个不错的设置,应该也是最近新加的,可以方便的帮我们批量设置tags,tags有什么用呢?在后面运行的时候我们可以选择指定tag的案例来运行。那么这里设置了Force Tags之后呢,他就会强制的给他的所有子元素加上这些tags。先设置上一个tag,名字我随便写的Prj Force,然后我们看效果。
2、文件型Suite的Settings
首先映入眼帘的应该就是那个红色Force Tags了吧。这就是刚刚我们在上一层的Test中设置了Prj Force这个标记,他就会强制的传递给所有的子元素,包括下面的TestCase。
这个Settings页面和目录型的基本差不多,重复的就不说了,说一下多出来的几个。
Test Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。
在Selenium2Library的Demo里有这个的使用,想了解的童鞋可以自己看一下。
Test Timeout:设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。这是防止某些情况导致案例一直卡住不动,也不停止也不失败。
Force Tags:这里还是要说一下,在文件型Suite这里还可以继续给子元素增加Force Tags,但是他不能删除父元素设置的tags
Default Tags:默认标记,其实和Force Tags没啥区别的,效果都是一样的,只是颜色不同而已。
我们在这里分别再增加一个Tag:
3、TestCase的Settings
可以看到这里把前面增加的Tags都加上了,很方便懒人啊,以前一个一个的设置好麻烦,现在至少可以批量设置了,然后如果不够可以再针对单个案例设置独特的Tag。
Force Tags和Default Tags的区别在我看来只是颜色上有些区分,其他的区别暂时没有发现。
这里的Setup、Teardown、Timeout、Template其实前面加上一个Test就是和文件型Suite里的是一样的了。因为这已经是在Test Case了,所以省略了。
4、Resource的Settings
不多说,这个只有一个documentation。
5、User Keywords的Settings
和TestCase比较起来,他没有了Tags,也没有Setup和Template,而有2个新的设置就是Arguments和Return Value。
其实有过一点编程基础的童鞋应该都知道的,传入参数和返回值。
这样看起来User Keywords其实就是一个函数了,再进一步说,Bulletin的Keywords和TestLib里的Keywords也都是一个个的函数,只是封装在不同层面。后2个是在代码级的封装,将python代码写成的函数封装成可以调用的关键字,而User Keywords就是把这些可调用的关键字进一步的封装,可以理解为应用层面的封装,而且可以层层封装。
到后面你会发现,大部分时间,你其实是和User Keywords在打交道,利用好User Keywords,会方便很多。
====Tips====
平时不用经常设置Settings的时候可以点击一下把设置隐藏起来。
============
三:Run
这一讲主要说一下工作区的Run页面,这里可以手动运行我们的案例有关的一些设置。
1、先看看截图
在我写这个文章的前几天,RIDE推出了0.45版本,其中一大改进就是把图中左下方的选择运行案例的区域和我们的案例区整合到一起了。在只想运行单个Case的时候方便了很多,直接打勾后运行即可;而在0.44及之前的版本,我们需要先点Run,然后再左下方找到要运行的案例打勾后再运行——当案例非常多的时候,要多点很多次鼠标。
在截图中,我们依次来说。
1) Execution Profile:选择运行方式,里面有pybot、jybot和custom script。其中我们默认是用pybot来运行案例,jybot需要安装Jython的支持。custom script是选择自定义的脚本来运行。就目前而言,我们不用修改了,默认pybot即可,以后我们再研究一下其他2个。
2) Start和Stop:这两个应该不用说了,运行和停止案例。
3) Report和Log: 报告和日志,要运行之后才能点击。他们的区别么,我的感觉是报告更多是结果上的展示,日志更多是过程的记录,更多使用的还是日志。
4) Autosave: 自动保存,如果不勾选,在修改了案例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存了。
5) Arguments: pybot的参数(或者jybot等),比如我后面截图里加上了一个参数。完整版的参数可以在doc命令行输入pybot.bat --help
6) Only Run Tests with these Tags: 只运行这些标记的测试案例。
7) Skip Tests with these Tags: 跳过这些标记的测试案例。6和7这2个就和我们前面讲过的Tags有关系了,当你的案例多了以后,用tags来管理和运行案例是比较方便的,你可以根据需要只运行某些标记的案例或者跳过他们。(当然前提是你的案例要能独立运行,没有互相依赖。后面我们的案例设计也是要一样要在这个大前提下进行)
最后下面的2个区域,左边的是选择运行哪些案例的,如果不选就是全部。右边的区域是运行信息输出区域,运行过程的某些输出信息以及运行结果都会在这里显示。
2、下面我们来运行一下看看。
为了简单演示一下刚才说的Arguments,我加了个参数 -t case,其实加不加效果是一样的,因为我们现在就这1个案例,如果再多加个案例的话,他就只会按照我给的参数只运行叫case的案例。
在输出区域,我们可以看到运行的过程,目前这个版本里没有加上打印具体过程的日志,吴博的更新版本里加上了,会把每一个页面操作时的日志打印出来。
这里我们的case案例中只有如下几行脚本
打开IE浏览器,进入百度页面,在搜索栏输入 土里土齐,点击搜索。
在图2中看到的No Translation for key,就是针对我输入的中文显示的,不过这个不影响执行结果的。
在图2里,每一个案例都一个结果,Pass或者Fail,最终会给出一个总的结果。
再往下的三行:
Output: c:\users\sony\appdata\local\temp\RIDEvrzwbh.d\output.xml
Log: c:\users\sony\appdata\local\temp\RIDEvrzwbh.d\log.html
Report: c:\users\sony\appdata\local\temp\RIDEvrzwbh.d\report.html
第一个是output.xml,具体的作用么,目前我们是用在和jenkins的集成上,用这个文件来输出报告的。
另外2个html文件就是和Run页面看到的2个按钮有关联的了,在图2运行完成之后,那2个按钮也都可以点击了,点击后会显示对应那个html文件。
3、下面我们点击一下log按钮看看。
通常情况下我们可能会看到这个页面,主要是IE的设置里限制active脚本,可以手动点一下提示的链接选择允许,不过下次还是会这样的。
我们可以在IE的工具=>Internet选项=>高级页面,把图中的允许活动内容运行的选项打勾,这样以后就不会再提示了。