如果你还想从头学起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)- 扩展关键字的更多相关文章

  1. Robot Framework自动化_Selenium2Library 关键字

    Robot Framework自动化_Selenium2Library 关键字 培训老师:肖能尤 2016/06/12 课程目的 一.Robot framework Selenium2Library ...

  2. Robot Framework开发系统关键字详细

    本文的目的,是记录如何在rf下,开发属于自己的库函数(又称之系统关键字) 1.首先在..\Python27\Lib\site-packages目录下创建自定义库目录如Verification_Libr ...

  3. Robot framework(RF) 用户关键字

    3.6  用户关键字 在Robot Framework 中关键字的创建分两种:系统关键字和用户关键字. 系统关键字是需要通过脚本开发相应的类和方法,从而实现某一逻辑功能. 用户关键字是根据业务的需求利 ...

  4. [Robot Framework] SikuliLibrary的关键字执行依赖java进程,但是上次的java进程如果没有杀掉,robot framework控制台的日志出不来,怎么办?

    如果在suite的setup里面杀掉java进程:AutoItLibrary.Run | taskkill /F /IM java.exe 执行sikuli的关键字会报这样的错误: Connectio ...

  5. Robot Framework(用户关键字)

    在 Robot Framework 中关键字的创建分两种:系统关键字和用户关键字.系统关键字需要通过脚本开发相应的类和方法,这个我们将在后面的章节介绍.用户关键字的创建就要简单得多,它主要利用现有的系 ...

  6. Robot Framework selenium2library 常用关键字

    Selenium Library SeleniumLibrary is a Robot Framework test library that uses the popular Selenium we ...

  7. Robot Framework封装的关键字输入参数可以传入多个值的方法

    输入参数的最后一个参数可以是一个列表变量,通过@{列表名称}或者${列表名称}的方式实现传入多个值的场景: 或者

  8. Robot Framework(十四) 扩展RobotFramework框架——创建测试库

    4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...

  9. 【Robot Framework 介绍】总纲

    Robot Framework是一个由python构建的的开源的自动化测试框架,现在版本还在不停的更新中.由于它开源性,网上有大量的第三方接口和很多资料.下面提供两个比较官方的链接,有兴趣的同学可以直 ...

  10. robot framework学习笔记之二———变量

    Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...

随机推荐

  1. 多源最短路径算法:Floyd算法

    前言 由于本人太菜,这里不讨论Floyd的正确性. 简介 多源最短路径,解决的是求从图中任意两点之间的最短路径的问题. 分析 代码短小精悍,主要代码只有四行,直接放上: for(int k=1;k&l ...

  2. 70行实现Promise核心源码

    70行实现Promise核心源码 前言: ​ 一直以来都是只会调用Promise的API,而且调API还是调用axios封装好的Promise,太丢人了!!!没有真正的去了解过它的原理是如何实现的,自 ...

  3. P2422 良好的感觉(两头单调)

    描述:https://www.luogu.com.cn/problem/P2422 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人 ...

  4. 【Swift】获取UILabel中点击的某个功能标签文字并作出响应动作

    1.需求 首先.针对UILabel中显示的多个功能标签,作出颜色标记提示. 其次.对关键字作出点击响应动作. 如图所示: 解决: 1.使用正则匹配到关键字 public static var hash ...

  5. 【FPGA篇章四】FPGA状态机:三段式以及书写方法

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 状态机是fpga设计中极其重要的一种技巧,状态机通过不同的状态迁移来完成特定的逻辑操作,掌握状态机的写法可以使fpga的开发事半功倍. 状态 ...

  6. STM32 串口USART DMA方式发送接收数据

    硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...

  7. Mybatis 分页:Pagehelper + 拦截器实现

    一.分页插件 Pagehelper PageHelper是Mybatis的一个分页插件,非常好用! 1.1 Spring Boot 依赖 <!-- pagehelper 分页插件--> & ...

  8. 自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码

    一.什么是PO模式 全称:page object model  简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! ​ 主要分三层: 1.基础层BaseP ...

  9. Quartus II 中参数化模块库(LPM)的使用

    Quartus II  的LPM库所在的目录是\altera\11.0\quartus\libraries\megafunctions 现以LPM_MULT为例进行演示: 思路:1.首先创建一个pro ...

  10. Jetson AGX Xavier/Ubuntu安装SSD

    参考 https://blog.csdn.net/xingdou520/article/details/84309155 1. 查看硬盘所有分区 sudo fdisk -lu 会找到/dev/nvme ...