本文的目的,是记录如何在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开发系统关键字详细的更多相关文章

  1. Robot Framework分层、开发系统关键字

            开发系统关键字:http://www.cnblogs.com/fnng/p/4261293.html http://www.cnblogs.com/fnng/p/3969978.htm ...

  2. Robot Framework自动化_Selenium2Library 关键字

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

  3. Robot Framework自动化测试(五)--- 开发系统关键字

    最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带 ...

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

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

  5. Robot Framework自动化测试Selenium2Library库详细用法

    一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...

  6. Robot Framework(用户关键字)

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

  7. Robot Framework(12)- 详细解读 RF 的变量和常量

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 常量的栗子 常量 ...

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

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

  9. Robot Framework selenium2library 常用关键字

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

随机推荐

  1. 移动端audio自动播放问题

    中秋临近,心血来潮想做个手机端贺卡,以前接触的移动端较少,虽然是个简单的贺卡,其实也蛮多坑的,简略说一下在制作贺卡的过程遇到的坑: 一:移动端的屏幕大小不能算作body的大小,因为手机浏览器头部都有网 ...

  2. C语言学习 数独游戏

    摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...

  3. Mysql表结构定义及相关语法

    mysql语法及相关命令1.每个sql命令都需要使用分号来完成2.可以将一个命令写成多行3.可以通过\c来取消本行命令4.可以通过\g.exit.ctrl+c或者quit来退出当前客户端5.可以通过使 ...

  4. redis 2

    http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage 在Ubuntu下安装reids redis-2. ...

  5. 如何优化 App 的启动时间

    http://www.cocoachina.com/ios/20161102/17931.html App 运行理论 main() 执行前发生的事 Mach-O 格式 虚拟内存基础 Mach-O 二进 ...

  6. MUI判断网络连接以及监听网络变化JS

    来源:netChange问题:怎么判断网络状态 MUI用于获取当前设备的网络类型 function plusReady(){ var types = {}; types[plus.networkinf ...

  7. 大数据时代之hadoop(一):hadoop安装

    1.hadoop版本介绍 0.20.2版本以前(不含该版本)的配置文件都在default.xml中. 0.20.x以后的版本不含有eclipse插件的jar包,由于eclipse的版本不一,所以就需要 ...

  8. 关于百度地图API (持续跟新)

    一.初始化地图显示不在正中间,出现偏移 问题描述与解决办法: 代码: body, html, #allmap { width: 100%; height: 100%; overflow: hidden ...

  9. Chrome渲染分析之Timeline工具的使用

    原文http://www.th7.cn/web/html-css/201406/42043.shtml Timeline工具栏提供了对于在装载你的Web应用的过程中,时间花费情况的概览,这些应用包括处 ...

  10. 花括号中的json数据--->转为数组array

    //正式服务器 更换航班 public function changef(){ $str = '{"airportTax":50,"arriModifyTime" ...