学习Robot Framework必须掌握的库—-BuiltIn库

近来经常有童鞋问我一些RF的基本问题,如:如何实现循环?如何退出循环?如何实现判断?如何做类型转换?其实,作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能(注1),而是提供给了用户BuiltIn库。如果用户想在测试用例中实现比较复杂的逻辑,那就需要对BuiltIn中的重要关键字有一些了解。另外,BuiltIn库中还封装了很多常见方法和能够控制RF运行状态的关键字,如果想用好RF,一定要对BuiltIn库中的函数有一个比较全面的理解。下面就带着大家认识一下BuiltIn库中比较重要的关键字。

Evaluate 关键字:如果你需要进行一些数值运算并得到结果,你就需要用到Evaluate关键字。Evaluate会把你想要计算的表达式直接传递给Python,并把Python的计算结果返回给你。这是最经常要用到的。

Should 系列关键字:Should系列关键字是Should大头的一系列关键字。
Should Be Empty · Should Be Equal · Should Be Equal As Integers · Should Be Equal As Numbers · Should Be Equal As Strings · Should Be True · Should Contain · Should Contain X Times· Should End With · Should Match · Should Match Regexp · Should Not Be Empty · Should Not Be Equal · Should Not Be Equal As Integers · Should Not Be Equal As Numbers · Should Not Be Equal As Strings · Should Not Be True · Should Not Contain · Should Not End With · Should Not Match ·Should Not Match Regexp · Should Not Start With · Should Start With
这些关键字都是用作判断时用的,每个用例都会用到,比如我们的执行结果得到了一个字符串,我们要判断这个字符串要与一个预期字符串相等,否则用例就无法通过,这时候,肯定会用上 Should Be Equal As String
关键字,其它关键字我们通过关键字的名字就能顾名思义,知道它的作用。

Convert To系列关键字:
Convert To Binary · Convert To Boolean · Convert To Hex · Convert To Integer · Convert To Number · Convert To Octal · Convert To String
做类型转换比不可少。

Run keyword系列关键字:
Run Keyword If · Run Keyword If All Critical Tests Passed · Run Keyword If All Tests Passed · Run Keyword If Any Critical Tests Failed ·Run Keyword If Any Tests Failed · Run Keyword If Test Failed · Run Keyword If Test Passed · Run Keyword If Timeout Occurred ·

这些关键字能根据一个判断条件的真假来看是否执行关键字。一般使用这些关键字来实现高级语言中的if else功能。最常用的是Run Keyword If 和 Run Keyword unless 他们俩实现的效果正好相反。

Exit For Loop关键字:
用作退出循环,一般和Run keyword if 关键字联合使用,来实现条件退出。

Wait Until Keyword Succeeds
这是一个将异步调用变为同步调用的关键字。举一个例子:如果call某个WebService,并且需要得到返回结果才能做下一部操作。我们就会用到这个关键字。

BuiltIn库里还有很多宝贝,比如日期相关的关键字Get Time。让测试暂停的Sleep等。都相当有用。还等什么?
去这个链接遍历一遍它吧:)http://robotframework.googlecode.com/hg/doc/libraries/BuiltIn.html

注1:RF目前仅有2个内置关键字:FOF 和 IN,来实现循环结构。功能还是比较弱的。

rebot的使用

rebot简要使用方法介绍
在介绍rebot前,首先说一下RobotFramework(后称RF)的主要输出文件。

当我们执行完一个RF脚本后,RF会输出3种文件。分别是Output、Log和Report。

Output 是和xunit兼容的一种xml格式的输出文件。可以被各种持续集成工具读取。所有被记录下来的信息其实都在里边。
Log是RF从output文件中提取并格式化的html文件,里边有所有keyword执行的细节情况。
Report也是从output里提取出来的html文件,里边以报表的形式给出了执行情况的统计信息。

Rebot是一个RobotFramework(后称RF)自带的工具。它能够对多个Output 进行整合,并重新输出Log 和Report文件。
这就使得我们可以很方便的组合多个或者多次执行的结果到一个Report或者Log文件中。

下面结合一种使用场景,给出Rebot的用法。

使用场景描述:第一个testsuit用pybot执行,第二个testsuit用jybot执行,但是想把结果整合到一起。(这种场景其实也可以用remote技术统一到pybot里去执行)。

第一个testsuit(testsuit的名称叫 suitForJybot.txt)的脚本如下:

*** Test Cases ***
case1
log runned by jybot

第二个testsuit(testsuit的名称叫 suitForPybot.txt)的脚本如下:

*** Test Cases ***
case1
log runned by pybot

假设两个testsuit在一个目录中,假设为d:\rebot。

我们在命令行中做如下操作。
d:
cd d:\rebot
jybot -o out1.xml suitForJybot.txt

执行完毕后,我们看到目录中有了一个文件叫做out1.xml

继续在命令行中执行。

pybot -o out2.xml suitForPybot.txt
执行完毕后,我们看到目录中有了一个文件叫做out2.xml

下面就要使用rebot了。
执行:

rebot out1.xml out2xml

这样我们看到目录中有了一个文件叫做 output.xml ,log.html 和report.html
查看 log.html和report.html,我们发现两次执行的结果已经被合并在了一起。rebot很简单很强大吧?

进阶:

1.其实上述一系列命令可以写成一个windows下的批处理文件,或者linux下的shell文件,能够进一步简化你的工作。
2.pybot/jybot里面的很多参数很有用,例如 -t 可以指定执行哪一个testcase; -i可以根据tag指定要执行的testcase;-e -c这些都能够帮助你灵活的控制执行范围。pybot还支持随机顺序执行等高级操作。
3.pybot中的 -o -l -r参数分别可以规定 output ,log ,report的输出,可以灵活指定输出到那里,很有用。
4. rebot中有同样类似的参数,可以让你随心所欲的生成各种报告。详细可以在命令行模式下使用rebot –help 指令查看参数列表。