01- 关于测试库(Test libraries)
Test libraries provide the actual testing capabilities to Robot Framework by providing keywords.
There are several standard libraries that are bundled in with the framework, and galore of separately developed external libraries that can be installed based on your needs.
- Standard: Builtin, OperatingSystem, String, Dialogs, Remote, Telnet, XML, etc.
- External: Selenium2Library, SSHLibrary, HTTP library, etc.
- Other: Creating test libraries, etc.
如何查找测试库:
- robotframework.org:http://robotframework.org/#test-libraries
- PyPI:https://pypi.org/search/?q=robotframework
安装测试库
注意:包之间的依赖关系和安装顺序;
示例
: 以在Windows7-64位系统安装robotframework-selenium2library为例
- pip install decorator
- pip install selenium
- pip install robotframework-selenium2library
02- 测试用例的组织层次结构
(Web Demo —Valid Login)
•测试集(Test Case Suite)
测试用例被实现的地方,包含了一个或多个测试用例,其本质是一个文本文件(HTML, TSV,TXT,ROBOT) 。在测试集中可以引入扩展库,Resource以及变量。
为了便于管理,一般是通过引入资源文件(Resource files)的方式来引入扩展库,关键字和变量。测试集里面最好只存有测试用例。
典型情况下,每个工程都会有至少一个测试组件。在大一些的工程中,把不同功能点的测试切分成多个测试组件是合理的。一个测试集目录可以包含其他测试集目录,这种层次结构可以满足层嵌套的需要。
•测试用例(Test Case)
一个测试用例对应Test Case Suite下的一个测试用例标识。
为了方便用例管理,Test Case里面尽量做到方便,简洁,易读。所以Test Case里面很少有内容的判断,一般都是直接调用Keyword。
•自定义关键字(User Keyword )
建议存放在资源文件(Resource files)中。
可以将自定义关键字理解为是测试步骤的组合,通常用于封装已有关键字的调用,以及测试用例结果的判断。
•变量(Variables)
不常改变的变量可以放到.py文件中,调试用经常改变的变量可以放在Resources中。
变量建议存放在资源文件(Resource files)或者python库函数中。
可分为返回值变量和参数变量。
返回值变量:通常写在函数名的左边,有几个返回值,则可以写几个变量。
参数变量:通常写在函数名的右边,有几个参数则必须填几个。Robot有参数提醒功能。
•资源文件(Resource files)
建议在资源文件中自定义高层关键字,引入扩展库以及自定义变量。
•变量文件(Variable files)
可以提供比资源文件更灵活的方式创建变量
•测试库(Test libraries)
包含最低级别的关键字。
如果是安装的扩展库,引用后可以直接使用。
如果是自己编写的扩展库,可以放在.py文件中,然后从相对路径调用后使用。
03- 创建简单自定义的test library
•确认要实现的内容
1:公式:(a+b)的a次方,a,b是正整数
2:有一网址(字符串),http://www.example.com?ip=192.187.111.198&code=12345&name=cat,想得到ip内容,即192.187.111.198
3:(用户名+10位随机数+一个key)进行md5加密
•编写test library
测试库以.py为后缀名,文件名与实现该测试库的模块名或者类名相同: <Class name>.py。
根据需要编写testlibrary,定义相关的class及函数等。
返回值在 Python中采用 return 语句。
# -*- coding: utf-8 -*-
import re ## re 模块提供了一系列功能强大的正则表达式 (regular expression) 工具
import hashlib ## Secure hashes and message digests
import random ## random 模块包含许多随机数生成器
import string ## string 模块提供了一些用于处理字符串类型的函数,
class CreatNewLibrary():
def ABA(self,a,b):
'''
公式:(a+b)的a次方,a,b是正整数
Example:
| ${c} | aba | 2 | 3 |
结果${c}=25
'''
return (int(a)+int(b))**int(a)
def Find_IP(self,url):
'''
从网址获取IP地址
Example:
| ${ip} | Find IP | http://www.example.com?ip=192.187.111.198&code=12345&name=cat |
结果${ip}=192.187.111.198
'''
ip = re.findall('ip=(.*?)&',url,re.I)
if(ip and ip[0]!=''):
return ip[0]
else:
return "没有匹配到IP"
def MD5_RandStr(self,username,key='UYTYUT-65HGj-IYR8760-YRJKKL9'):
'''
(用户名+一个key)进行MD5加密,key有默认的,也可以执行设定
Example :
| ${string} | MD5 RandStr | tester |
| ${string} | MD5 RandStr | tester | UYTYUT-65HGj-IYR8760-YRJKKL9
'''
return hashlib.md5(username+key).hexdigest()
•编译调试test library
保证Test library完整无误,正常运行。
![](https://i-blog.csdnimg.cn/blog_migrate/1d4cba7a618f1c3c5f7b3e5ac762c928.png)
•导入及确认test library
如果将test library文件放在了testcase的同一目录下,所以直接输入文件名全称即可。
如果test library文件在其他地方,要保证文件地址信息正确,或者以查找文件的方式导入也可。
![](https://i-blog.csdnimg.cn/blog_migrate/307390ca83c75e63f08f432a74a300b3.png)
正常的情况下,导入完成test library文件名称在settings中应显示为黑色。
按F5键,选择对应的Source名称,正常情况下,可以看到自定义库和说定义的关键字信息。
•应用test library
Test Case的编写及调试
利用自定义库的关键字完成Test Case的编写,并根据相关日志调试
*** Settings ***
Force Tags CreatNewBasicLibrary
Library CreatNewLibrary.py
*** Test Cases ***
CreatNewBasicLibrary
${c}ABA 2 3
Log${c}
${ip}Find IPhttp://www.example.com?ip=192.187.111.198&code=12345&name=cat
Log${ip}
${string1} MD5 RandStr tester
Log${string1}
${string2} MD5 RandStr tester123456-654321-98765-56789
Log${string2}