《我的RobotFramework书》1-5 测试库, Test Library
来源:互联网 发布:云计算的服务器是什么? 编辑:程序博客网 时间:2024/05/17 21:42
测试库, Test Library
作者: 虞科敏
测试库包含底层关键字,库关键字Library Keywords.
导入库
- 使用Setting Table中的Library Setting导入
库名字是大小写和空格敏感的
如果库存在一个包Package中,应提高包含包的全名Full Name
库可能需要参数进行初始化
库导入时支持参数缺省值,可变长参数,命名参数等语法,这和关键字的参数语法很像 库名和参数都可以使用变量
样例
可以在Resource File, Test Case File, Suite __init__ File中导入库,库中的关键字在导入库的文件中可用
Settings
Library OperatingSystem
Library my.package.TestLibrary
Library MyLibrary arg1 arg2
Library ${LIBRARY}
- 使用关键字Import Library
导入的方法和Library Setting很相似
导入的关键字在Import Library关键字被使用的suite中可用
样例
Test Cases
ExampleDo Something
Import Library MyLibrary arg1 arg2
KW From MyLibrary
指定导入的库
使用库的名字
RF框架会在[module search path][1]中根据库名字找寻实现库的类或者模块
理解Module Search Path对于理解库的查找非常重要,这个实际就是使用Python的解释器进行模块搜索的概念,了解Python的同学不难理解。
- Python解释器的安装目录,三方库的安装目录,自动就在搜索路径中。 在Python的搜索路径中的模块,不需要经过其他配置,就能被导入
- 更多的路径信息,可以通过PYTHONPATH, JYTHONPATH, IRONPYTHONPATH环境变量进行设置
- 命令行选项 --pythonpath (-P) 也可以添加更多的地址到搜索路径中
- 通过编程控制sys.path属性
- 如果使用Jython,还可以使用Jython的模块搜索路径或者Java Classpath
样例
--pythonpath libs
--pythonpath /opt/testlibs:mylibs.zip:yourlibs
--pythonpath mylib.jar --pythonpath lib/STAR.jar --escape star:STAR
[1] 路径搜索和搜索路径
模块的导入需要一个叫做"路径搜索"的过程。 即在文件系统"预定义区域"中查找 mymodule.py 文件(如果你导入 mymodule 的话)。 这些预定义区域只不过是你的 Python 搜索路径的集合。路径搜索和搜索路径是两个不同的概念, 前者是指查找某个文件的操作, 后者是去查找一组目录。
默认搜索路径是在编译或是安装时指定的。 它可以在一个或两个地方修改。
一个是启动Python的shell或命令行的PYTHONPATH环境变量。 该变量的内容是一组用冒号分割的目录路径。 如果你想让解释器使用这个变量, 那么请确保在启动解释器或执行Python脚本前设置或修改了该变量。
解释器启动之后, 也可以访问这个搜索路径, 它会被保存在 sys 模块的 sys.path 变量里。不过它已经不是冒号分割的字符串, 而是包含每个独立路径的列表。 这只是个列表, 所以我们可以随时随地对它进行修改。 如果你知道你需要导入的模块是什么,而它的路径不在搜索路径里, 那么只需要调用列表的 append() 方法即可, 就像这样: sys.path.append('/home/wesc/py/lib'). 修改完成后, 你就可以加载自己的模块了。 只要这个列表中的某个目录包含这个文件, 它就会被正确导入。
使用库的物理路径
另一种思路是使用库在系统中的路径来指定库
路径以相对于当前test data file所在目录的相对地址来给出,这和Resource Files, Vairable Files很相似
如果库是文件,那么.ext,文件的扩展名必须被包括在路径中,比如Java的.class或.java,Python的.py等
如果库是目录,那么路径应该以"/"结尾
样例
局限: 实现为Python类的库,Python类所在的module名必须和类名相同
Settings
Library PythonLibrary.py
Library /absolute/path/JavaLibrary.java
Library relative/path/PythonDirLib/ possible arguments
Library ${RESOURCES}/Example.class
库别名
有很多场景,我们使用客户定制化的库名(库别名)会更加方便,或不得不使用定制化的库名:
- 使用不同的参数导入同一个库多次
- 库名太长,比如很多包名很长
- 使用变量在不同的环境中导入不同的包, 但你想使用相同的名字进行引用
- 库名很糟糕,很容易误导人
Library Setting或者关键字Import Keyword都支持库别名
样例1
WITH NAME 大小写敏感
指定的名字会在Log中显示
使用关键字全名时,必须使用库别名
Settings
Library com.company.TestLib WITH NAME TestLib
Library ${LIBRARY} WITH NAME MyName
样例2
使用不同的参数引入同一个库多次
Settings
Library SomeLibrary localhost 1234 WITH NAME LocalLib
Library SomeLibrary server.domain 8080 WITH NAME RemoteLibTest Cases
My TestLocalLib.Some Keyword some arg second arg
RemoteLib.Some Keyword another arg whatever
LocalLib.Another Keyword
标准库, Standard Library
RF框架提供如下标准库。
BuiltInCollectionsDateTimeDialogsOperatingSystemProcessScreenshotStringTelnetXML
另外, 除了普通标准库,还存在另一种完全不同的远程库, Remote Library.
远程库不提供任何关键字, 它在RF框架和远程的库实现之间以代理的形式工作.
远程的库实现可以运行在和RF框架不同的其他机器上,甚至可以被并非RF支持的编程语言实现。
外部库, External Library
任何非标准库的测试库,称为外部库。
RF开源社区已经一些常用的测试库,没有打包到框架核心之中. 更多公共外部库,可以访问 http://robotframework.org
Selenium2LibrarySwingLibrary
- 《我的RobotFramework书》1-5 测试库, Test Library
- 《我的RobotFramework书》1-3 测试模板, Test Template
- 《我的RobotFramework书》1-4 测试套件, Test Suite
- 《我的RobotFramework书》1-2 测试用例, Test Case
- 《我的RobotFramework书》1-1 测试数据, Test Data
- 《我的RobotFramework书》 - 篇首
- 《我的RobotFramework书》1-6 变量, Variable
- 自己写简单的RobotFramework的Library
- Robotframework+ride中test template的用法
- 《我的RobotFramework书》1-6-4 变量的属性和作用范围
- RobotFramework 使用远程测试库
- 《我的RobotFramework书》1-6-1 创建变量, Creating Variables
- 《我的RobotFramework书》1-6-2 变量文件, Vairable Files
- 《我的RobotFramework书》1-6-3 内建变量, Build-in Variables
- robotframework 基于接口测试的框架探索1
- RobotFramework 自定义Library
- robotframework 基于接口测试的框架探索
- robotframework + selenium2library 一点测试的经验
- Marshal类
- curl模拟get和post请求
- 《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
- DistBelief 框架下的并行随机梯度下降法 - Downpour SGD
- SET使用
- 《我的RobotFramework书》1-5 测试库, Test Library
- 直接获取当前页面URL中参数的值
- 「线性代数」chapter1线性代数中的线性方程组
- 通过数组和枚举简化GPIO操作编码
- Android版本列表
- 前置++和后置++的区别
- 利用EF来进行数据库的操作
- 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字
- ubuntu安装matlabR2015b,报错matlab encountered an internal problem ... segmentation violation...