四 Extending Robot Framework

4.1 Creating test libraries

  RF的测试能力由测试库支持决定,已经有许多的测试库,有一些随着RF框架安装,但是更多的需要创建新的库来支持。RF提供了API来支持个人用户自建库。

4.1.1 Introduction

  RF使用Python语言写成的,所以支持使用python写的库,当使用jython运行RF的时候,可以使用java来写库,如果是由纯python写的代码可以在python和jython环境下运行。使用python的时候也可以通过python c api使用C语言写的库,使用ctypes模块来完成python库和C代码的交互。也可以将外部脚本和工具作为独立进程运行。

  创建库的指导文档:http://code.google.com/p/robotframework/wiki/PythonTutorial

Different  test library APIs:

RF 支持三种不同的API,所有的API是以静态API为基础:

Static API:最简单的就是使用python模块中的方法直接映射为关键字,关键字和该方法有相同的参数。关键字通过Return关键字返回日志和异常输出失败信息。

Dynamic API

Hybrid API:

4.1.2 Creating test library class or module

  测试库可以是一个python模块也可以是python和java类。

Test library names

  测试库的名称就是在导入库的时候使用的名称,例如一个MyLibrary.py的文件创建一个名称为MyLibrary的库。python的类包含在模块中,如果python中class的名称和module的名称一样,例如Mylib.py中定义一个Mylib的类,import Mylib包之后则可以直接使用Mylib来使用该类,如果名称不同则必须使用模块名和类名来调用类如Mylib.Myclass.其中python语言的库支持接收参数,且可以使用变量。

*** Settings ***
Library MyLibrary 10.0.0.1 8080
Library AnotherLib ${VAR}

上面的第一个是python模块,第二个是java,其对应的定义如下:

from example import Connection

class MyLibrary:

    def __init__(self, host, port=80):
self._conn = Connection(host, int(port)) def send_message(self, message):
self._conn.send(message)
public class AnotherLib {

    private String setting = null;

    public AnotherLib(String setting) {
setting = setting;
} public void doSomething() {
if setting.equals("42") {
// do something ...
}
}
}

Test library scope

  库文件作为类有一个内部状态,这个状态可以由关键字和参数来修改。由于该状态可能会影响关键字的运行动作,所以需要确定不会多个用例之间不会意外影响。这种相互影响的存在可能导致一些很难debug的问题。

  RF默认对每一个用例都在调用库时候创建独立的实例来努力保证用例的相互独立,但是这并不能全部适合,因为有时候用例之间需要共享一些状态。

mark

RF学习使用记录【4】的更多相关文章

  1. Activiti 学习笔记记录(2016-8-31)

    上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

  2. Activiti 学习笔记记录(二)

    上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...

  3. PostgresSQL 学习资料记录处

    PostgresSQL 学习资料记录处  博客:http://francs3.blog.163.com PostgreSQL9.4 中文手册:http://www.postgres.cn/docs/9 ...

  4. Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  5. Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  6. Java NIO学习与记录(八): Reactor两种多线程模型的实现

    Reactor两种多线程模型的实现 注:本篇文章例子基于上一篇进行:Java NIO学习与记录(七): Reactor单线程模型的实现 紧接着上篇Reactor单线程模型的例子来,假设Handler的 ...

  7. ZigBee cc2530芯片学习 error记录(1)

    ZigBee cc2530芯片学习 error记录   Error[e46]: Undefined external "LcdInit" referred in main( xxx ...

  8. JVM 学习笔记记录

    JVM 学习笔记记录 Sun JDK 监控和故障处理工具 名称 主要作用 jps JVM Process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程 jstat JVM S ...

  9. '"千"第一周学习情况记录

    一周过去了,今天将我这一周的学习内容和主要感想记录与此和大家共同分享,一起进步.我将自己的学习计划命名为"千",因为我喜欢这个字,希望能用此来鼓舞自己不断前进.时间总是很快的,这一 ...

随机推荐

  1. jQuery - 制作点击显示二级菜单效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. STL 集合部分操作

    3.28更新 在EOJ 1641 集合栈计算机中,使用并集和补集时候,第五个参数使用x.begin()会报错:assignment of read-only location,而使用inserter( ...

  3. zoj3478

    最短路 吐槽一下...最先开始写了个地图哈希,6kb,然后不是正解,又写了个spfa,4kb,还是不对,无奈抄标程,结果把spfa改成dijiestra就对了... 由于只有两个变量,所以我们设一个四 ...

  4. aspectC++常用命令

    常用命令:1.ag++ main.cc //在工程目录下产生编译后的exe2.ag++ main.cc --weave_only //产生.acc 纯c++文件3.ag++ main.cc --gen ...

  5. centos vi和vim用法

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  6. [Apple开发者帐户帮助]三、创建证书(7)创建证书签名请求

    Mac上的Keychain Access允许您创建证书签名请求(CSR). 启动位于的Keychain Access /Applications/Utilities. 选择Keychain Acces ...

  7. Chrome 最小化恢复之后部分黑屏

    解决办法:设置->显示高级设置->关闭硬件加速

  8. 5.29MyBatis Generator

    二.MyBatis Generator CRUD(创建,检索,更新,删除) 与表结构匹配的Java POJO BLOB (binary large object),二进制大对象,是一个可以存储二进制文 ...

  9. div自动适应浏览器窗口水平和垂直居中

    html <body> <div id="centerDiv">自动适应水平和垂直居中</div> </body> css ;;} ...

  10. jquery中的left和top

    left 和 top /*1. 获取元素基于定位容器的位置*/ /*返回的是对象 属性 left top */ var position = $('.inner').position(); conso ...