robotframework自带库
内容转移至:www.xiwenqin.com 自建系统,不定时开启。
BuiltIn 库
-
Call Method
从翻译上来看是调用一个方法,但是由于存在另外的调用方式,一般习惯使用关键词import library来引入任意一个py文件,然后直接调用其方法。这个方法实在要用的话,需要配合Evaluate先实例化一个对象
上面就是我自己定义了一个otheraction的py文件,里面又定义了一个otheraction的class,里面的方法名叫pppt 打印下参数
执行后:
-
Catenate
合并字符串,官方示例3种用法,比较直观。
跟python的+有何区别?这个连接方式,作用在robot的@{}型列表变量上,可以有效拼接里面的值。但作用在${}型列表上,就没啥用,整个列表看成一个字符串。实例如下:
执行效果:
-
Comment
注释,跟#的区别:没发现区别。但需要批量注释的话,就需要在ride工具上,多选然后右键comment。 -
Continue For Loop 用于循环内部,就是python的continue
-
Continue For Loop If 用于循环内,带条件的continue
-
Convert To Binary
转换源为二进制,官方说明里还有3个可选参数。默认源为10进制,base=就是指定源为几进制。prefix=sdfsdfafaf 这个参数就是在结果前面加前缀,感觉没啥意义。length=10 这个参数就是在结果值前面补0,假如结果就4位长度,这么一搞前面就能补6个0,但是假如带有-号,-号仍是在最前面的。 -
Convert To Boolean
转换布尔型,只有参数为False false FALSE才能出现false的布尔型,其他任意输入都会返回True -
Convert To Bytes
转换为字节。假如不带第二个参数,那就默认源是字符串。剩下3种类型int,hex,bin 整型,16进制型,二进制型。
官方就支持这4种类型。
而且还不支持中文。 -
Convert To Hex
转换为16进制,默认源为10进制。相比上面的转二进制方法多了个参数,lowercase= 这个参数的意思是把结果值转换为小写(但转换不对前缀生效)=后面仅当no时是不转换,否则任意字符都会认为要转换为小写。 -
Convert To Integer
转换为整型,其base支持16,8,2 另外不指定base时还能用0b表示二进制,0x表示十六进制。参见官方示例。 -
Convert To Number
转换为数值,直接看官方示例,很直观。o -
Convert To Octal
转换为八进制,参数的用法参见转换为二进制的方法。 -
Convert To String
转换为字符串 -
Create Dictionary
创建一个字典,如果想看起来好理解,就不要用robot的字典变量格式&,而是用通用的$型。就跟@型变量,中间用|隔开以用,&型也是用了|隔开,非常不友好。
官方文档示例了前2种创建方法比较简单,第三种创建方法实际上是嵌套了一个&字典,而这个&字典实际上打印出来看下格式就知道为何它能被嵌入了。RF里面所谓的字典型,列表型像是多个变量集合。python里面的这些是一个变量,RF里的单一变量才能对应。
${dict.key}这种方法取value,只能用于键名为字符串的,不能用于数值键名,哪怕数值是个字符串。这个时候要用collections库,里面有个get dictionary value 方法。 -
Create List
创建一个列表,同上面一样,注意@和$的区别。官方文档很直观。 -
Evaluate
比较常用的一个关键词,后面可以接python的语法,比如json.loads(‘json串’)a,这个方法在python里面写都要import json,这边RF里面直接就能用。
可选参数:model 就是需要引入的模块,比如pymysql,os等等;还能是自己写的自定义方法。这就是import library的又一种实现方式了。但是自定义方法调用还是推荐在测试套件上统一定义包名称,要不以后改死人。
可选参数: namespace 看官方就是指一个字典,可以照着用。 -
Exit For Loop 退出循环,等价于python的break
-
Exit For Loop If 带条件退出循环
-
Fail
相当于python的raise 抛出错误并终止执行,一般情况下只终止一个CASE,不影响其他case执行。第一参数就是报错信息,其第二个参数叫tags,就是在输出的报告里把这个报错归类一个tag名目。这样在大批量执行时,会好一些。 -
Fatal Error 终止全部,这句之后所有的都会报错,包括其他套件。
-
FOR … END
for 循环的用法实例:
1.实例中@{qq}为定义的一个列表,上述写法跟python里面写基本没区别,但Robot Framework本身并不支持直接使用嵌套循环,但是可以通过在一个循环结构中使用另一个包含有循环结构的关键字来实现。
2.虽然执行成功了,但有个警告,就是提示说不能用\,需要用END关键词,那就用新的写法来避免警告。
3.这个写法也是模拟python的for i in range(0,4):的写法,而且习惯下它的要求使用END关键词结尾吧。
4.IN RANGE后面还可以指定开始数字,结束数字,以及步长。每个数字占一个格子即可。
5.同时遍历值和下标的写法:
6.FOR IN ZIP 同时遍历多个对象,比如3个列表,但循环次数是以长度短的那个为准。
7.跳出循环的方法:Exit for loop 等价于python的break 或者可以写成:Exit for loop If 带条件的跳出。
8.python里面continue在robot里面的写法:Continue for loop,或者带条件判断的写法:Continue for loop If
9.假如逻辑简单的重复执行,可以用关键词Repeat keyword重复执行 -
Get Count
获取匹配次数,一般后面第一个参数是列表或字符串,第二个参数是匹配目标。
Get Count qqqqqqqqqqqqq qq
上述写法,会返回6,说明每次匹配到后,都切断,再从后面继续匹配,直到最后。 -
Get Length 获取长度值,等价于len()函数
-
Get Library Instance
实例化一个包,或者多个包。这个就是python里面对一个class进行实例化的RF实现。假如不做这一步,有些方法里面写了self,就一定要传值,否则就会提示少一个参数。
例如:
上述方法,如果不做实例化,就一定要把self的位置传一个值,否则就会认为少掉一个参数。self有什么用,百度一下去,本人能力有限解释不了。 -
Get Time
获取时间,一般什么参数都不带,返回值就是下面这种:2020-07-02 15:04:02
时间格式,官方文档里有说明,可以获取年月日,时分秒
还能从一个指定的日期时间内获取年月日,时分秒。 -
Get Variable Value
${aa} Get Variable Value @{qq1} @{qq}
基本就是这么个用法,假如@{qq1}存在,那么就用它的值,否则用后面的那个变量的值。跟set的区别?还没发现。 -
Get Variables
获取所有变量,效果跟Ctrl+Shift+空格,查出来的变量一样。 -
Import Library
导入一个库,可以导入单个.py文件,实例:
上述引用只能在case上生效,无法跨case。虽然作用范围不如在套件上导入,但这个引用是动态的,也许能用于需要重写方法的场合。 -
Import Resource
动态得加载一个资源,跟套件上加载的区别也就是作用域了 -
Import Variables
动态导入变量,跟套件上的区别在于作用域。 -
Keyword Should Exist
判断关键词是否存在,似乎没什么用。不存在的话,用的时候系统就会报错。 -
Length Should Be
长度的一个判断,感觉也没啥用,多写2行代码就行了。 -
Log 打印
-
Log Many 对于多变量集合的打印,@型,&型。
-
Log To Console 没明白有什么用。
-
Log Variables
打印出所有变量,跟get variables差不多。 -
No Operation 啥事都不干,类似python的pass
-
Pass Execution 跳过这个case,相对于fail,这个语句后面不执行,日志里也报绿色。
-
Pass Execution If 带条件跳过case
-
Regexp Escape
返回转义后用作正则表达式的每个参数字符串。
此关键字可用于转义要与“Should Match Regexp”和“Should Not Match Regexp”关键字一起使用的字符串。 -
Reload Library
重写加载库,尚不明白有什么用。 -
Remove Tags
删除标签,仅仅是从日志里删除,并不能删除ride里面设置的标签 -
Repeat Keyword 重复执行
-
Replace Variables
替换掉文本里面的变量,填入其值。
robot在执行的时候似乎会自动识别,用的场景似乎很少。 -
Return From Keyword
中途return,官方示例是在用户关键词里面用了pass,没有正常结束的时候,可以用这个,还有就是for循环里面。但一般应该用下面这个带有if的场景。 -
Return From Keyword If
-
Run Keyword
因为要执行的关键字的名称是作为参数给定的,所以它可以是一个变量,因此可以动态设置,例如从另一个关键字的返回值或从命令行进行设置。(这就是官方给出的它的用处) -
Run Keyword And Continue On Failure
虽然报错,但后面的语句还是要执行。有点try的感觉 -
Run Keyword And Expect Error
竟然是断言错误信息。 -
Run Keyword And Ignore Error
执行并忽略错误 -
Run Keyword And Return
-
Run Keyword And Return If
-
Run Keyword And Return Status
-
Run Keyword If
通常意义上的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
上述这些都是用在teardown里面的,相当于后置操作。 -
Run Keyword Unless 没用的一个关键词
-
Run Keywords
运行多个语句,一般用在if后面 -
Set Global Variable
设置全局变量,其没有返回值,不同于set Variable -
Set Library Search Order
-
Set Local Variable 不解
-
Set Log Level
-
Set Suite Documentation
-
Set Suite Metadata
-
Set Suite Variable
设置套件变量,其没有返回值,不同于set Variable -
Set Tags
设置标签,但仅显示于输出中,编辑ride中不可见。 -
Set Task Variable
设置任务变量,不解。全局变量已经能跨文件夹生效了。 -
Set Test Documentation
-
Set Test Message
-
Set Test Variable
不解 -
Set Variable
变量赋值。官方示例中,后面2种要注意熟悉 -
Set Variable If 等价于case when 参考官方示例就好
-
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 Any
断言多个内容,一般比较实用。 -
Should Contain X Times
-
Should End With
-
Should Start With
-
Should Match
类似sheel的通配符匹配,官方没有示例。能查到的就是’*'匹配0~无穷多个字符,“?”单个字符
Should Match aaa34vvvv55jj *34?vvv55jj 这种写法能通过
Should Match aaa34vvvv55jj *34?vvv55 这种就报错,说明这个函数不是包含关系,而是等价模式。
-
Should Match Regexp
正则匹配,可以是包含关系。正则的专门学习参考:添加链接描述
默认是只找出第一个满足项并return,例如:
运行结果:
但是一般正则都是要寻找多个匹配项,可以这么用:
期望是把4个数字提取出来,运行结果:
括号的作用是分组,也可以把这5个输出放在一个list变量里面,不按上述赋值方式。
RF里面正则表达式基于python,区别就是需要2个反斜杠,转义一下。学好python的正则,才能在RF里应用。 -
Should Not Be Empty
-
其他should not 跟上面反义
-
Sleep 即python的time.sleep()
-
Variable Should Exist
-
Variable Should Not Exist
上面2个用于判断变量存在性。尚不知道什么场景需要 -
Wait Until Keyword Succeeds
可以用来重复执行,其参数指定失败后重试的次数,以及重试的间隔。相当有用,有时候可能只是网络不稳定,所以一般应该多用这个,写起来可能麻烦点。