四 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. VC ON_CONTROL_RANGE多个控件响应一个方法

    步骤/方法 分三个步骤 在头文件里声明函数比如 afx_msg void onNum(UINT uID) 在.cpp文件里加入函数体 void CCalculatorDlg::OnNum(UINT u ...

  2. jQuery - 制作非缘勿扰页面特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. C# winform KeyPress 事件中对应的数字

    C#  winform KeyPress 事件中对应的数字所有e.KeyChar值的意思 常用ASCII码表 你自己看看应该就明白了 键盘 ASCII码 键盘 ASCII码 ESC 27 7 55 S ...

  4. constraint和index--转载

    primary key和unique约束是要依赖index的,下面通过试验来看看他们之间的依赖关系!       SQL> select * from tt;   ID NA --------- ...

  5. CPPCMS库在Windows下的使用

    标题:CPPCMS库在Windows下的使用时间:2012-7作者:Kagula 环境:[1]WinXP SP3[2]VisualStudio2008 SP1[3]ZLib 1.2.7[4]PCRE ...

  6. TCP打开文件传输(服务器端并发code)

    #include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/types. ...

  7. 批量梯度下降(Batch gradient descent) C++

    At each step the weight vector is moved in the direction of the greatest rate of decrease of the err ...

  8. C/C++中输入多组数据方法

    --------开始-------- 对于刚开始学编程的人来说每次基本上就是一次数据输入,多次的话基本也是会给定一个数组的大小,但随着做刷算法题开始,题目有的会不直接告诉输入几组数据,基本输入都是多组 ...

  9. JS代码放在哪里比较好!

    在页面上加上<script></script>只有2个地方:head中,body体中 如果外部的JS文件,在head中加,写页面特效js放在body后面. <html&g ...

  10. centos7用rpm安装mysql5.7【初始用yum安装发现下载非常慢,就考虑本地用迅雷下载rpm方式安装】

    1.下载 4个rpm包 mysql-community-client-5.7.26-1.el7.x86_64.rpmmysql-community-common-5.7.26-1.el7.x86_64 ...