Robot Framework标准库学习

作为RF自动化的初学与使用者,成长的每一步都是宝贵的,在简书记下这个过程,帮忙他人成长自已。从这一篇标准库+XML开始吧。


原文链接:http://www.cnblogs.com/loleina/p/5528287.html  (作者loleina


       前段时间充忙的学习RF,系统学习完之后就开始动手做各种接口的测试,虽然各类的接口测试基本能跑通了,但是重复造车的问题存在太明显。RF本身内置库就已经比较丰富,比如不需要import直接就加载到内存的BuiltIn库,还有需要import的常用模块String,Collections,XML库。在前面的接口测试中,使用最多的就是这几个内置库,接口返回的数据基本都是xml格式的居多,然后自己也重复造车了,为此特地花了几天时间去学习了下内置库,主要还是学了下XML库,以下的分享都是基于XML库。

学习XML内置库,我认为需要掌握以下几个知识点:

第一:内置库的概念?有哪些内置库,大概都有什么关键字?有区分版本吗?跟RF版本有关么?为什么内置库有些需要import,有些不需要import?

第二:XML内置库使用的是python的哪个标准库?对这个标准库需要有哪些基本的了解?

第三:内置库是怎么构建起来的?基本关键字是否能灵活的使用?

第四:有时候可能需要稍微修改下内置库,比如增加一些关键字等,该怎么修改?

从网上和官网(http://robotframework.org)上搜到一些资料,整理如下:

第一:内置库的基本概念?

内置库实际在官网称为standard library,就是标准库。常见的其他库比如Request,SeleniumLibrary库,官网称之为external library,就是外部库,也称第三方库。标准库和外部库首先要正确的进行区分,对于标准库,这些库是直接绑定在RF内的,在

D:\Python27\Lib\site-packages\robot\libraries(视python安装目录变化) 下可以看到,无须再下载;而外部库,是需要根据个人需要,下载后再安装导入才能使用的。 对于标准库,又分两类,类似BuiltIn库是RF自动加载到内存的,安装后按下F5就能直接使

用,不需要再次import,而XML库需要再次import才能正常使用。因为BuiltIn library 提供了很多常用的关键字,比如Should Be EqualConvert To Integer等,所以RF就把这个常用的库自动加载到了内存。

不同版本的RF,支持不同的内置库而且相同的内置库里的关键字可能也是不一样的,以RF3.0(使用命令robot --version查看RF版本)为例,3.0是目前最新的RF的版本,支持很多的内置库,查看D:\Python27\Lib\site-packages\robot下的py文件,可以看到:

基本官网写的10个标准库都能在这里面找到相应的py文件。BuiltIn,Collections,DateTime,Dialogs,Process,OperatingSystem,Remote(没有关键字,暂时不算在内),Screenshot,String,Telnet,XML.这11个库,有些是在RF2.0的时候就已经有了的,最晚的DateTime,Process,XML是在RF2.8之后才内置的,也就是说如果当前使用的是RF2.8之前的版本,内置库是无法直接import XML就是使用的,需要下载安装才能使用,这点需要注意下,不同的RF版本,相同的标准库之间也是会细微的区别,这需要仔细的去查看保准库内每个版本的使用文档。

10个标准库,又都是做什么用的呢,这还真需要了解,而且还需要多花时间去了解每个标准库里面的关键字,这10个标准库,介绍如下:

这个表的来源是来自官网的,官网的用户手册文档已经描述的非常详细了。学习的时候可以详细的查看官网的相关文档。

第二:XML内置库的学习。

从内置库的XML的源码可以看出,RF使用的是ETree来对xml进行解析的,部分源码如下:


python提供了几个标准库都可以对xml进行解析,之前我使用的是DOM,基于RF使用的是ETree,便开始学习了下

ETree的开发文档

。学习对XML文件的操作,那肯定也得对XML本身有最基本的了解,比如XML的用途,树结构,节点类型(DOM),带命名空间的xml。下面是部分的知识点的总结:

xml是一种可扩展的标记语言。要求标记需要成对的出现(有时候会进行简写)。一个典型的xml文档如下所示:


A. 整个xml文档是一个文档节点,属于根节点,比如上述文档的

节点就是一个根节点,一个xml文件只能有一个根节点,否则解析的时候会报错的

B.每个 XML 标签是一个元素节点,比如 和, 都属于元素节点,却属于的子节点。

C.attribute值:表示节点元素的属性值,比如first 有一个属性id,属性值为1;second也有id属性,属性值为2,而third没有属性。

D.Text值:表示元素中的文本内容。比如:first 的text值就为1;second没有,third也没有;

一个xml还包含其他的内容:比如处理指令和一些注释;在python的etree标准库解析的过程中,是直接把这二个给剔除掉了。有兴趣的可以根据官网给出的开发文档,把常用的一些方法都敲一遍,主要的还是使用2个类 Element Objects和ElementTree Objects。

第三:RF中XML库的学习。

在使用sudslibrary做soap协议的测试时,返回的xml是带命名空间的,之前一直不理解,对XML库进行整体的学习之后就有了很大的理解。

XML库主要有以下几个作用(翻译于原文手册):

A. 解析一个XML文件,或一个包含XML的字符串,在一个XML元素结构中,并从中寻找某些元素,用于进一步分析 (e.g.Parse XMLandGet Elementkeywords).

B. 获取元素的文本或属性(e.g.Get Element TextandGet Element Attribute).

C. 直接验证文本、属性或全部元素 (e.gElement Text Should BeandElements Should Be Equal).

D. 修改和保存它(e.g.Set Element Text,Add ElementandSave XML).

下面按照关键字的类型大致做了以下的学习:解析的xml都是前面的xml例子

A.最常用关键字的学习:

B. 通过xpath来搜素子节点。

C. 简单的带命名空间的xml的解析

D. 复杂的命名空间的xml解析(之前soap协议返回的xml的解析部分补充)

       这些操作基本都是围绕着对XML的读写,之前做报文测试的时候,遇到过返回的的xml是没有根元素的,如果直接使用XML库是无法进行解析的,需要加上根节点,再进行解析,于是直接写了用户自定义的库。而且当时需要从xml中读取报文字段,与测试数据组合后,再一起发给服务器,这部分也是XML库没有提供的内容。但是对返回的xml的数据进行解析,xml库做的还是比较到位。如果觉得系统带的xml库功能不够使用,或者想把几个功能整成一个功能使用,通过以上的学习基本可以修改下代码,然后自定义一个库了。

       还有几点的学习,后面还需要对RF有更深刻的了解才能有所感悟,这次的学习给我带来了一些全新的收获,以前我查找资料很少看官方文档,虽然英文过了六级,但是一看英文文档还是会头晕脑胀,这次逼着自己看了官网的标准库的开发文档和用户手册,真感觉很不错,简洁又明了,学习官网手册果然是很不错的学习方法,比去看某些博客收获更全面更权威~~~这个技能get了~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容