Robot Framework(15)- 扩展关键字
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1770899.html
前言
- 什么是扩展关键字?就是你自己写的 Python 文件,里面包含了函数或者类
- 然后 RF 导入这个 Python 模块,就可以调用函数或者类方法,它们就是扩展关键字
Python 模块作为测试库
模块文件名作为测试库的名字
比如:Python 模块名叫 MyLibrary,文件名是 MyLibrary.py,那么测试库的名字就叫做 MyLibrary
Python 模块和 Robot 文件同目录下的栗子
这是目录结构哈

python 模块的代码
def returnlist():
return [i for i in range(10)] def return_dict():
return {"a": "hahhahahaahah"} # 以下划线开头的函数不能作为RF关键字
def _returnlist2():
return [1, 2]
robot 代码

进入test目录下,运行以下命令
robot -P . test.robot
执行结果

知识点
- _前缀的方法不会作为关键字,在Python里面, _ 开头的方法是私有方法,RF 不会识别到它
- Python 方法作为关键字也是大小写不敏感的
- RF 中会把关键字的 _ 和单个空格忽略掉,所以 returndict、return dict、return_dict 都是调用同一个关键字
导入 Python 模块的搜索规则
- 先根据 robot 文件当前目录下查找库文件
- 如果没有找到则再根据提供的 --pythonpath 或 -P 去寻找
Python 类作为测试库的栗子
项目目录

所有 Python 测试代码都在 tlib2.py 里面哦
最终运行是在【15_扩展关键字】目录下运行的,命令如下
robot -P . testrf
栗子一:类初始化不需要传参
python 代码
class SubLibrary:
def __init__(self):
pass def returnint(self):
return 2020 def _returnint2(self):
return 4
robot 代码

测试结果

知识点
- 在类里面, _ 前缀的方法不会当做关键字
- 同样,类中声明的方法当做关键字的话,大小写不敏感
栗子二:类初始化需要传参
python 代码
from robot.api import logger
class SubLibrary2:
def __init__(self, host, port, table='test'):
self.host = host
self.port = port
self.table = table def printaddr2(self):
logger.console('host:%s,port:%s,table:%s' % (self.host, self.port, self.table))
robot 代码

测试结果

知识点
如果类的 __init__ 初始化方法需要传参,则在导入库后面跟对应的参数列表
拓展 Python 知识点:先有类对象,还是先执行类初始化方法?
__new__ 方法产生对象
__init__ 对象的初始化方法
先 new 一个对象,再 init 一个对象
栗子三:类名和模块名相同
python 代码
from robot.api import logger class tlib2:
def __init__(self, host, port):
self.host = host
self.port = port def printaddr(self):
logger.console('host:%s,port:%s' % (self.host, self.port))
robot 代码

测试结果

知识点
如果类名和模块名相同,可以不用导入类名
栗子四:使用路径法导入 Python 模块
Python 代码用的还是栗子三的
robot 代码

测试结果

知识点
如果用路径法,需要注意导入 Python 模块需要有文件后缀哦,且用 / 来表示目录下
Robot Framework(15)- 扩展关键字的更多相关文章
- Robot Framework自动化_Selenium2Library 关键字
Robot Framework自动化_Selenium2Library 关键字 培训老师:肖能尤 2016/06/12 课程目的 一.Robot framework Selenium2Library ...
- Robot Framework开发系统关键字详细
本文的目的,是记录如何在rf下,开发属于自己的库函数(又称之系统关键字) 1.首先在..\Python27\Lib\site-packages目录下创建自定义库目录如Verification_Libr ...
- Robot framework(RF) 用户关键字
3.6 用户关键字 在Robot Framework 中关键字的创建分两种:系统关键字和用户关键字. 系统关键字是需要通过脚本开发相应的类和方法,从而实现某一逻辑功能. 用户关键字是根据业务的需求利 ...
- [Robot Framework] SikuliLibrary的关键字执行依赖java进程,但是上次的java进程如果没有杀掉,robot framework控制台的日志出不来,怎么办?
如果在suite的setup里面杀掉java进程:AutoItLibrary.Run | taskkill /F /IM java.exe 执行sikuli的关键字会报这样的错误: Connectio ...
- Robot Framework(用户关键字)
在 Robot Framework 中关键字的创建分两种:系统关键字和用户关键字.系统关键字需要通过脚本开发相应的类和方法,这个我们将在后面的章节介绍.用户关键字的创建就要简单得多,它主要利用现有的系 ...
- Robot Framework selenium2library 常用关键字
Selenium Library SeleniumLibrary is a Robot Framework test library that uses the popular Selenium we ...
- Robot Framework封装的关键字输入参数可以传入多个值的方法
输入参数的最后一个参数可以是一个列表变量,通过@{列表名称}或者${列表名称}的方式实现传入多个值的场景: 或者
- Robot Framework(十四) 扩展RobotFramework框架——创建测试库
4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...
- 【Robot Framework 介绍】总纲
Robot Framework是一个由python构建的的开源的自动化测试框架,现在版本还在不停的更新中.由于它开源性,网上有大量的第三方接口和很多资料.下面提供两个比较官方的链接,有兴趣的同学可以直 ...
- robot framework学习笔记之二———变量
Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...
随机推荐
- 【面试题】String类、包装类的不可变性
不可变类的意思是创建该类的实例后,该实例的实例变量是不可改变的.Java提供的8个包装类和String类都是不可变类.因此String和8个包装类都具有不可变性. 就拿String类来说,通过阅读St ...
- Spring官网阅读(一)容器及实例化
从今天开始,我们一起过一遍Spring的官网,一边读,一边结合在路神课堂上学习的知识,讲一讲自己的理解.不管是之前关于动态代理的文章,还是读Spring的官网,都是为了之后对Spring的源码做更全面 ...
- 前端自适应样式reset.css
@charset "utf-8"; /* CSS Document */ html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4 ...
- MySQL——关于索引的总结
索引的优缺点 首先说说索引的优点:最大的好处无疑就算提高查询效率.有的索引还能保证数据的唯一性,比如唯一索引. 而它的坏处很明显:索引也是文件,我们在创建索引时,也会创建额外的文件,所以会占用一些硬盘 ...
- ObjectOutputStream:对象的序列化流 ObjectInputStream:对象的反序列化流
package com.itheima.demo04.ObjectStream; import java.io.FileOutputStream; import java.io.IOException ...
- 存储过程——异常捕获&打印异常信息
目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...
- 2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup
2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup 2020年网鼎杯白虎组赛题.zip下载 https://download.csdn.net/download/jameswhit ...
- javaweb学习之路(3)Cookie
1.Cookies的原理 1)首先浏览器向服务器发出请求. 2)服务器就会根据需要生成一个Cookie对象,并且把数据保存在该对象内. 3)然后把该Cookie对象放在响应头,一并发送回浏览器. 4) ...
- vue.use()方法从源码到使用
在做 vue 开发的时候大家一定经常接触 Vue.use() 方法,官网给出的解释是: 通过全局方法 Vue.use() 使用插件:我觉得把使用理解成注册更合适一些,首先看下面常见的注册场景. 1 2 ...
- 开发一个maven脚手架
写在前面 开发新项目就需要搭建新工程,但是搭建新工程的这个过程是非常繁琐浪费时间的,并且不可避免的需要踩坑.更可怕的是,如果是在一个团队中,每新起一个项目都由不同的开发人员去自定义的搭建工程结构,那么 ...