Robot Framework开发系统关键字详细
本文的目的,是记录如何在rf下,开发属于自己的库函数(又称之系统关键字)
1、首先在..\Python27\Lib\site-packages目录下创建自定义库目录如Verification_Library,用于放自定义的library库。
2、在自定义文件夹Verification_Library中新建一个"version.py"文件,用于描述自定义测试库的版本信息。
代码如下:
VERSION='1.0'
3、在自定义库的文件夹Verification_Library下,新建一个keywords类,如文件名:verification.py, 测试类别为:Verfication 详细如下:
(本实例的目的,实现对传入的json格式的data数据进行校验--应用场景,主要是针对http request库返回的response中的data数据进行校验):
__author__ = 'Administrator'
#coding=utf-8
#脚本作用:公共json数据校验方法,遍历data数据,校验字符串及整型数值 import logging data={"classify":
[{
"id":1,
"name":"XX"
}],
"test":{},
"hotSongs":[{
"songId" : 2,
"songName" :"ddd",
"singerId" : 3,
"singerName" :"aaa",
"hash" : "435B50137E16526DFF5BB10DA13A2A4D",
"climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
"startTime" : 104000,
"endTime" : 125000,
"krc" : "but I just can't make a sound",
"singerImg" : "20111226113925990226.jpg"
},
{
"songId" : 3,
"songName" :"ddd",
"singerId" : 4,
"singerName" :"aaa",
"hash" : "435B50137E16526DFF5BB10DA13A2A4D",
"climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
"startTime" : 104000,
"endTime" : 125000,
"krc" : "but I just can't make a sound",
"singerImg" : "20111226113925990226.jpg"
}]
} data1={ "songId" : 2,
"songName" :"ddd",
"singerId" : 3,
"singerName" :"aaa",
"hash" : "435B50137E16526DFF5BB10DA13A2A4D",
"climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
"startTime" : 104000,
"endTime" : 125000,
"krc" : "but I just can't make a sound",
"singerImg" : "20111226113925990226.jpg"
} class Verfication(object): def verfication_data(self,data,msg=None):
'''
1、验证传入的参数,如果为字典,则遍历字典中的各个key,判断各个key值,如果为字符串型,则校验字符串为非空,如果为整型,则校验字符串大于0
2、如果传入的参数为列表,则将列表中各个参数取出,如果列表中各个参数为字典,处理方法参照第1步。
'''
if isinstance(data,dict):
logging.info("---基本信息获取---")
logging.info("传入的data为json对象!")
logging.info('传入过来的json对象主key的长度:%s'%len(data))
keys=data.keys()
logging.info(keys)
logging.info('---开始进行校验---')
#定义变量,计算遍历次数
times=0
for key,value in data.iteritems():
times=times+1
logging.info("")
logging.info("---传入的data数据,第%s对象元素,key值对应为:%s---"%(times,key))
logging.info('%s:%s' % (key, value))
self.analysis_subItem(value,msg) else:
print type(data)
logging.info("传入的data数据不是dict对象") #判断value值对应的类型,从而进行相应的处理,嵌入递归函数
def analysis_subItem(self,item,msg):
'''
1、不管value值取出如何,最终还是拆解成最小单元,字符串或者是整型来进行判断
:return:
'''
if isinstance(item,str):
if self.get_length(item) == 0:
raise AssertionError(msg or "'%s' should not be empty." % str)
elif isinstance(item,int):
if int(item)<=0:
raise AssertionError("当前int型获取到的数字小于等于0") elif isinstance(item,list):
value_list_len=len(item)
logging.info('%s对应值的类型为list且长度为%s'%(item,value_list_len))
for i in range(value_list_len):
logging.info("")
logging.info("内嵌的列表中,第%s个子元素"%(i+1))
self.analysis_subItem(item[i],msg) elif isinstance(item,dict):
value_dict_len=len(item)
logging.info('%s对应值的类型为dict且长度为%s'%(item,value_dict_len))
times=0
for subkey,subvalue in item.iteritems():
times=times+1
logging.info("")
logging.info("---内嵌的字典中,第%s对象元素,key值对应为:%s---"%(times,subkey))
logging.info('%s:%s' % (subkey, subvalue))
self.analysis_subItem(subvalue,msg) #计算字符串长度
def get_length(self,item):
length =self._get_length(item)
logging.info('Length is %d' % length)
logging.info("")
return length def _get_length(self,item):
try:
return len(item) except:
raise RuntimeError("Could not get length of '%s'." % item) if __name__ == '__main__':
run_object=Verfication()
run_object.verfication_data(data)
4、对于创建普通的模块来说这样已经ok了。但要想在robot framework启动后加载这个关键字,还需要在自定义库目录Verification_Library下创建__init__.py文件,用于定义自定义库的相关信息和需要用到的keywords调用继承和声明。
__author__ = 'Administrator'
from verification import Verfication
from version import VERSION __version__=VERSION class Verification_Library(Verfication):
ROBOT_LIBRARY_SCOPE='GLOBAL' #此句作用是指该库运行的时候会作用在全局。
5、启动ride程序在setting部分添加library库信息,添加库名为Verification_Library
即可成功导入自定义库。
注意:
库文件夹名称一定要和__init__文件中的类名称相同(Verification_Library),否则导入自定义库时会出错。
Robot Framework开发系统关键字详细的更多相关文章
- Robot Framework分层、开发系统关键字
开发系统关键字:http://www.cnblogs.com/fnng/p/4261293.html http://www.cnblogs.com/fnng/p/3969978.htm ...
- Robot Framework自动化_Selenium2Library 关键字
Robot Framework自动化_Selenium2Library 关键字 培训老师:肖能尤 2016/06/12 课程目的 一.Robot framework Selenium2Library ...
- Robot Framework自动化测试(五)--- 开发系统关键字
最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带 ...
- Robot framework(RF) 用户关键字
3.6 用户关键字 在Robot Framework 中关键字的创建分两种:系统关键字和用户关键字. 系统关键字是需要通过脚本开发相应的类和方法,从而实现某一逻辑功能. 用户关键字是根据业务的需求利 ...
- Robot Framework自动化测试Selenium2Library库详细用法
一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...
- Robot Framework(用户关键字)
在 Robot Framework 中关键字的创建分两种:系统关键字和用户关键字.系统关键字需要通过脚本开发相应的类和方法,这个我们将在后面的章节介绍.用户关键字的创建就要简单得多,它主要利用现有的系 ...
- Robot Framework(12)- 详细解读 RF 的变量和常量
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 常量的栗子 常量 ...
- [Robot Framework] SikuliLibrary的关键字执行依赖java进程,但是上次的java进程如果没有杀掉,robot framework控制台的日志出不来,怎么办?
如果在suite的setup里面杀掉java进程:AutoItLibrary.Run | taskkill /F /IM java.exe 执行sikuli的关键字会报这样的错误: Connectio ...
- Robot Framework selenium2library 常用关键字
Selenium Library SeleniumLibrary is a Robot Framework test library that uses the popular Selenium we ...
随机推荐
- sql server 2008 R2 压缩备份数据库
今天需要把一个省外项目的数据库从服务器上备份.拷贝到本机(跨地域传输数据库备份文件). 连上VPN,通过远程桌面连接,连接上服务器,发现数据库文件已经有20G以上大小了. 文件太大,公司网络也不稳定, ...
- TI公司与MSP430单片机
美国德州仪器(Texas Instruments)公司,简称TI,是全球领先的半导体公司,成立于1930 年,成立之初是一家使用地震信号处理技术勘探原油的地质勘探公司,1951年更名为德州仪器公司,1 ...
- mysql5.7.14 配置
1. 下载并解压 zip包 2.将解压后的目录 bin 配置到path中 3.修改my-default.ini 文件名为my.ini 4.配置my.ini [mysql] #设置mysql客户端默认 ...
- HDU 1956 POJ 1637 Sightseeing tour
混合图的欧拉回路判定方法: 1.首先判断基图是否连通,不连通的话表示不可能,否则进入下一步. 2.对于无向边,随便确定一个方向 3.确定好了之后,整张图就变成了有向图,计算每个节点的入度与出度 4.如 ...
- html5--画布
简介 canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形.图标.以及其它任何视觉性图像.它也可用于创建图片特效和动画.canvas 元素本身是没有绘图能力的.所有的绘制工 ...
- 《JS权威指南学习总结--6.8对象的三个属性》
内容要点: 每一个对象都有与之相关的原型(prototype).类(class)和可扩展性 一.原型属性 1.对象的原型属性是用来继承属性的,这个属性是如此重要,以至于我们经常把 "0的原型 ...
- Node.js:包
概要:本篇博客主要介绍了node.js中的包 包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的库函数或者Java/.Net的类库.它将某个独立的功能封装起来,用于发布.更新.依赖管 ...
- apache动态添加模块
Apache已经安装完毕并投入运行,但是后来却发现部分模块没有加载,当然有两个方法: 1. 一是完全重新编译Apache, 再安装 2. 编译模块为SO文件,使用LoadModule指令加载扩展模块. ...
- infix to postfix 完整版
#include<iostream> #include<stack> #include<string> #include<deque> using na ...
- 文件传送,如此简单--ESFramework 4.0 快速上手(13)
在所有的通信系统中,文件传送是最常见也是最重要的功能之一,ESFramework对文件传送的强大支持也是其亮点之一,使用ESFramework可以非常轻松地实现与文件传送相关的所有需求.ESPlus. ...