robotframework 内置库BuiltIn学习笔记
robotframework自带库
- BuiltIn 库
内容转移至: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的布尔型,其他任意输入都会返回TrueConvert 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
转换为数值,直接看官方示例,很直观。oConvert 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 VariableSet Library Search Order
Set Local Variable 不解
Set Log Level
Set Suite Documentation
Set Suite Metadata
Set Suite Variable
设置套件变量,其没有返回值,不同于set VariableSet 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
可以用来重复执行,其参数指定失败后重试的次数,以及重试的间隔。相当有用,有时候可能只是网络不稳定,所以一般应该多用这个,写起来可能麻烦点。
robotframework 内置库BuiltIn学习笔记相关推荐
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- C4D 内置渲染器 学习笔记
C4D 内置渲染器 学习笔记 一.渲染到图片查看器 交互式区域渲染 这里可以调节渲染画质 创建动画预览 预览模式:硬件预览 图像尺寸可以大一些,这里渲染很快 二.渲染设置 选择渲染器 输出视频 保存 ...
- js内置对象【学习笔记】
今天系统的学了一下javascript的内置对象.mark相关的知识点: 首先,什么是js的内置对象,它包括了些什么内容?(以下内容转自网上资源的整合) (W3shool JS手册地址:http:// ...
- python 内置函数 builtins_python学习笔记(七)——内置函数
builtins.py模块,是python的内建模块,在运行时会自动导入该模块.在该模块中定义了很多我们常用的内置函数,比如print,input 等. 在 builtins.py 模块中给出如下注释 ...
- Python的内置函数的学习笔记
1 致谢 感谢陈志兴老师耐心的讲解与帮助! 2 前言 Python里面有一些内置函数,有时候看代码的时候会看不懂,这里记录一下- 3 Python中的内置函数 3.1 getattr() 通过名字找到 ...
- python内置库之学习ctypes库(三)--调用Win32API
ctypes库踩坑日记3 1.调用win32的api 2.最好让结构体和程序分开 3.取完数据找到对应信息,创建code.py 4.创建main.py,代码这样看着就很简洁 1.调用win32的api ...
- python内置库之学习ctypes库(二)
ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...
- python内置库之学习ctypes库(一)
ctypes库踩坑日记1 1.引言(这里是讲的windows下调用的方式) 2.结构体 3.联合体(共用体) 和上面结构体用法类似,只不过这里继承的是`Union`类 4.进阶用法 5.接受返回的值 ...
- Python第三方库pygame学习笔记(一)
Pygame Python最经典的2D游戏开发第三方库,也支持3D游戏开发 Pygame适合用于游戏逻辑验证.游戏入门及系统演示验证 Pygame是一种游戏开发引擎,基本逻辑具有参考价值 pygame ...
最新文章
- 2018年聊天机器人状态报告
- 四步搞定阿里云RDS云数据库恢复到本地mysql数据库
- Linux命令更新系统时间,更新所有文件的时间(转)
- 纠错码trick和数据压缩trick
- SecureCRT日志配置
- 路由cpu负载过高检查
- Python练习:整数加减和
- OpenCv之图像二值化(笔记12)
- springboot响应结果超长(7.8M)浏览器无法接收
- 【李宏毅2020 ML/DL】P16 PyTorch Tutorial | 最后提及了 apex.amp
- 软件测试之测试用例和缺陷报告模板分享
- YOLO算法发展史 v1 v2 v3
- 在美团,我从暑期实习到转正
- 华为:三层交换机 命令示例
- 微信视频聊天怎么美颜?以下方法可以帮到你!
- 【数据库 · MySQL】听韩顺平老师课草稿
- 理解以太坊 Serenity - 第二部分: Casper
- CSS3 3D立体旋转
- UED上半年工作总结
- Python就业前景好不好?为什么学完Python找不到工作?
热门文章
- Blender 移动模型到世界中心
- 全球大学AI排名发布!(人工智能领域高校实力排名)
- 秒杀系统防止超卖解决方案
- 车联网 python_【车联网系统】基于Python实现的现网全自动化测试方案
- 最新彩虹秒赞 V7.27免授权源码
- GDB实用插件(peda, gef, gdbinit)相互转换
- 关于域名备案的注意事项
- Docker系列 头脑风暴专用手绘图应用excalidraw
- 输出乱码原因:古文码、口字码、符号码、问号码、棍拷码
- Synchro plus SimTraffic 11.0.140.0中文版