四 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. JS基础之开篇

    JavaScript是解释型语言,无需编译就可以随时运行,这样哪怕语法有错误,没有语法错误的部分还是能正确运行. 1.JavaScript能做什么? 01, javaScript可以进行表单验证 如果 ...

  2. QT 4.53 for VS2005 编译包

    最近学QT,装了QT5,结果打开下载的项目(特别是那些书的源代码)有很多兼容性问题.于是又下载4.83,都是4版本系列的,应该会好很多吧,但居然也是这样.于是看了一下时间,觉得4.53于2009年底发 ...

  3. Swift版本UIWebView长按保存图片

    起因 最近需要做个IOS的壳子,用到长按保存图片的功能,发现百度出来的全是OC语法的例子,很多都不是全面,只能自己写一份Swift版本的,图片下面附上Github地址 效果图 Github地址:htt ...

  4. 将TensorFlow模型变为pb——官方本身提供API,直接调用即可

    TensorFlow: How to freeze a model and serve it with a python API 参考:https://blog.metaflow.fr/tensorf ...

  5. FFT模板——copied from hzwer

    /* Welcome Hacking Wish You High Rating */ #include<iostream> #include<cstdio> #include& ...

  6. [NOIP 2014] 寻找道路

    [题目链接] http://uoj.ac/problem/19 [算法] 首先,在反向图上从终点广搜,求出每个点是否可以在答案路径中 然后在正向图中求出源点至终点的最短路,同样可以使用广搜 时间复杂度 ...

  7. B1789 Y型项链 贪心

    想明白之后就是一道大水题,就是两两把最长公共前缀求出来,然后直接取最长的,然后就直接暴力算就行了... 题干: Description 欢乐岛上众多新奇的游乐项目让小可可他们玩的非常开心.现在他们正在 ...

  8. 洛谷 P3953 [ NOIP 2017 ] 逛公园 —— 最短路DP

    题目:https://www.luogu.org/problemnew/show/P3953 主要是看题解...还是觉得好难想啊... dfs DP,剩余容量的损耗是边权减去两点最短路差值...表示对 ...

  9. 杂项-Java:JNI

    ylbtech-杂项-Java:JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始, ...

  10. C# List常识之经常被忽略的常识

    最近在接收前辈的代码,越来越会发现有很多.net已经封装好的方法可以使用,我们却不知道,然后自己去For/Foreach循环解决自己的需求问题 总的来说:当下很忧伤啊.总结了几个经常需要用却不知道的方 ...