静态库

方法(methods)直接映射为关键字名称。关键字接受和方法相同的参数, 通过抛异常来 报告错误, 通过往标准输出里写入来写 log, 同时可以通过return 来返回结果。

创建步骤:

▲ 首先,在D:\xxxxx\Lib\site-packages目录下新建包名【比如MyLibrary】

▲ 其次,在__init__.py文件用于定义自定义库的相关信息,需要用到的keywords调用继承和声明。

注意:类名必须跟创建的包名MyLibrary一模一样,否则导入库会失败。

▲ 再次,在D:\xxxxxx\Lib\site-packages/MyLibrary目录下新建version.py文件用于描述自定义测试库的版本信息

▲ 最后, MyLibrary目录下新建MyKeywords类文件,用于完成想封装的各项功能方法,在函数定义文档注释用于导入RF框架,会显示该库的关键字文档内容信息

RIDE中导入库,用文件夹名字导入就行。

如果有多类需要引用,比如引用MyKeywords和MyTest1类,如下方法:

  • 导入测试库

  • 可看测试库信息

  • 执行脚本

  • 输出结果

动态库

RF的动态API方式,是利用get_keyword_names、run_keyword、get_keyword_arguments、 get_keyword_documentation四个固定名称的方法来运行关键字。只要你创建的类有这四个方法(主要是前两个),就可以让RF识别关键字。

动态库和混合库定义版本信息和init文件方法是一样,只是类文件封装方法及机制处理不同。

  • RF的动态API方式,是利用get_keyword_names、run_keyword、get_keyword_arguments、 get_keyword_documentation四个固定名称的方法来运行关键字,只要你创建的类有这四个方法(主要是前两个),就可以让RF识别关键字。
  • get_keyword_names方法实际是告诉RF,我们的库中有哪些关键字。RF会从get_keyword_names方法的返回值中读取关键字名称。

  • run_keyword方法则实际执行关键字对应的代码。run_keyword第一个参数是需要执行的关键字的名称,第二个参数是关键字的参数。

  • get_keyword_arguments方法告诉RF,每个关键字的参数是什么样的。它的参数是关键字的名称,返回值则是关键字的参数。

  • get_keyword_documentation方法告诉RF,每个关键字的说明文档的内容。

导入库后,查看信息如下图所示:

混合库

顾名思义,混合API方式是静态API和动态API方式的混合使用。混合API方式,使用get_keyword_names方法告知RF关键字有哪些,但是不使用run_keyword方法执行关键字。执行方式和静态API相同,执行和关键字同名的方法。

▲ 这个例子中,使用get_keyword_names方法告诉RF有“first_keyword”和"second_keyword"两个关键字。其中 “first_keyword”关键字执行first_keyword方法的代码。执行"second_keyword"关键字时,由于没有对应的方法, 所以RF先执行“__getattr__”方法,然后获取“__getattr__”方法返回的值。

▲ 注意:这里返回的值是一个可以被RF执行的方法(或函 数),而不是一个字符串。RF找到这个方法(或者函数)后,再执行代码。

测试库文档

测试库文档其实就是代码里的document注释,通常用3个双引号括起来,通常建议写在代码注释,这样有一个好处,RF提供了libdoc工具,可以很方便生成一份测试库文档,具体命令参考:

生成后的文档样本如下:

每次代码更新,就同步更新document注释,只需重新执行命令生成新的文档即可,文档可以直接为他人使用提供参考便利。

可以创建文档:

  • 测试库实现 Python 或 Java 使用正常 静态库API,
  • 测试库使用 动态API ,包括远程库
  • 资源文件 。

另外可以使用Libdoc创建的XML规范 作为输入。

选项

- f , - - -格式 < html | xml >
  指定是否要生成HTML或XML输出。 如果不使用此选项,格式 扩展的输出文件。
- f , ——docformat <机器人其他html文本| | | >
  指定源文件的格式。 可能的 值是机器人框架的文档格式, HTML、文本和恰好。 默认值 可以指定在测试库源代码和 初始默认值 机器人 。 2.7.5新机器人框架。
- n , ——名字 <新名称>
  集的名字记录库或资源。
- v , ——版本 <新版本>
  集的版本库或记录 资源。 测试库的默认值 从源代码 。
- p , ——pythonpath环境 <路径>
  额外的位置搜索库 和资源同样时 运行测试 。
- e , ——逃避 <什么:>
  转义字符的问题在控制台。 什么 角色的名字逃脱吗 和 与 是字符串来逃避它。 在列出可用的逃 ——帮助 输出。
- h ,——帮助 打印这个帮助。
资源文件的路径

资源文件必须使用指定的路径。 如果路径是 不存在,资源文件中所有目录搜索 的 模块搜索路径 同样当执行测试用例。

生成文档

在HTML或XML格式生成文档时,输出文件必须 被指定为第二个参数后,图书馆/资源名称或路径。 输出格式是自动从扩展但也可以设置 使用 - - -格式 选择。

例子:

python -m robot.libdoc OperatingSystem OperatingSystem.html
python -m robot.libdoc --name MyLibrary Remote::http://10.0.0.42:8270 MyLibrary.xml
python -m robot.libdoc test/resource.html doc/resource_doc.html
jython -m robot.libdoc --version 1.0 MyJavaLibrary.java MyJavaLibrary.html
jython -m robot.libdoc my.organization.DynamicJavaLibrary my.organization.DynamicJavaLibrary.xml

查看控制台信息

Libdoc有三个特殊的命令在控制台上显示信息。 使用这些命令输出文件的名称,而是和他们可以 也附加参数。

  • 列表
列表的名称关键词库/资源包含。 可以 限于只显示某些关键词通过可选模式 作为参数。 关键词列出其名称是否包含给定的模式。
  • 显示
显示库/资源文档。 只能是有限的显示吗 某些关键词通过名称作为参数。 如果显示关键字 它的名字匹配任何名字。 特别的观点 介绍 将显示 只有图书馆引进和导入部分。
  • 版本
显示库版本

可选模式给 列表显示。 同时也接受 * ?作为通配符。

例子:

python -m robot.libdoc Dialogs list
python -m robot.libdoc Selenium2Library list browser
python -m robot.libdoc Remote::10.0.0.42:8270 show
python -m robot.libdoc Dialogs show PauseExecution execute*
python -m robot.libdoc Selenium2Library show intro
python -m robot.libdoc Selenium2Library version

RF框架自定义测试库开发的更多相关文章

  1. Robot Framework(十四) 扩展RobotFramework框架——创建测试库

    4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...

  2. Robot Framework自定义测试库的作用域的理解

    robot framework中,强大的测试库api支持,用户可根据实际需求定义测试库,导入后可使用自定义库中相应的关键字. 当自定义的测试库是类库,则需要考虑一个问题:类实例.用类实现的库可以有内部 ...

  3. JavaWeb 自定义标签库开发传统标签

    自定义标签主要用于移除Jsp页面中的java代码. 移除jsp页面中的java代码,只需要完成两个步骤: 编写一个实现Tag接口的Java类,并覆盖doStartTag方法,把jsp页面中的java代 ...

  4. 基于科大讯飞AIUI平台自定义语义库的开发

    说明:我写这篇文章的主要目的是因为我在做这块的时候遇到过一些坑,也是希望后来者能少走一些弯路. 科大讯飞AIUI开放平台地址 科大讯飞AIUI开放平台后处理地址 AIUI后处理开放平台协议 1. 科大 ...

  5. RF之变量的共享使用与python测试库-5

    RF申明变量: 首先我们要创建Variables表 *** Settings *** ${LoginUrl}      http://cloud.innovpowerf.com/Account/Log ...

  6. 使用 ACE 库框架在 UNIX 中开发高性能并发应用

    使用 ACE 库框架在 UNIX 中开发高性能并发应用来源:developerWorks 中国 作者:Arpan Sen ACE 开放源码工具包可以帮助开发人员创建健壮的可移植多线程应用程序.本文讨论 ...

  7. RobotFramework自动化测试框架(3)- RobotFramework扩展测试库、资源文件、变量文件

    扩展测试库 扩展测试库可使用python或java语言编写.后直接导入需要使用的测试用例文件即可. 具体的实现和操作,后续补充.请参考官网. 资源文件 在资源文件中定义用户关键字,它提供了共享机制,即 ...

  8. Robot Framework(五)使用测试库

    使用测试库 测试库包含那些最低级别的关键字,通常称为 库关键字,实际上与被测系统交互.所有测试用例总是使用某些库中的关键字,通常是通过更高级别的用户关键字.本节介绍如何使用测试库以及如何使用它们提供的 ...

  9. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

随机推荐

  1. fastadmin html数字验证

    <input id="c" name="row[q]" data-rule="required;range(0~)" class=&q ...

  2. Makefile 编译静态库文件及链接静态库

    本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h  3 atexit.c Makefile  5 staticlib/lib/ staticlib ...

  3. python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块

    今天讲课内容有两大部分: 一.文件目录规范二.定制程序入口三.使用标准目录后四.常规函数time.datetime 一.标准目录规范 之前用过的案例atm机+购物商城代码过长,在学习了模块和包以后,我 ...

  4. Python中json的简单读写操作

    Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  5. AngularJS实现数据列表的增加、删除和上移下移等功能实例

      转: http://www.jb51.net/article/91991.htm 这篇文章给大家分享了AngularJS循环实现数据列表的增加.删除和上移下移等基础功能,对大家学习AngularJ ...

  6. 实操 | 内存占用减少高达90%,还不用升级硬件?没错,这篇文章教你妙用Pandas轻松处理大规模数据

    注:Pandas(Python Data Analysis Library) 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.此外,Pandas 纳入了大量库和一些标准的数据模型 ...

  7. 第七章 路由 76 路由传参-使用params方式传递路由参数

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

  8. 一次使用自定义 Http Header 引发的血案

    一次使用自定义 Http Header 引发的血案 HttpClient Http Header 自定义 nginx 不转发  起因 最近在整理我们产品的 OpenAPI Demo (Python.C ...

  9. Vue-cli + express 构建的SPA Blog(采用前后端分离方案)

    为什么学习并使用Vue 1.发展趋势 最近这几年的前端圈子,由于戏台一般精彩纷呈,从 MVC 到 MVVM,你刚唱罢我登场. backbone,AngularJS 已成昨日黄花,reactjs 如日中 ...

  10. 前端每周清单第 49 期:Webpack 4 Beta 尝鲜,React Windowing 与 setState 分析,Web Worker 实战

    前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点:分为新闻热点.开发教程.工程实践.深度阅读.开源项目.巅峰人生等栏目.欢迎关注[前端之巅]微信公众号(ID: fron ...