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.
如何查找测试库:
安装测试库
注意:包之间的依赖关系和安装顺序;    
示例 : 以在Windows7-64位系统安装robotframework-selenium2library为例
  1. pip install decorator
  2. pip install selenium
  3. 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完整无误,正常运行。

•导入及确认test library

     如果将test library文件放在了testcase的同一目录下,所以直接输入文件名全称即可。
     如果test library文件在其他地方,要保证文件地址信息正确,或者以查找文件的方式导入也可。

正常的情况下,导入完成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}

Robot Framework - 1 - 测试用例与测试库的更多相关文章

  1. Robot Framework: 自定义自己的python库

    利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...

  2. Robot Framework(4)- 测试套件的基本使用

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 因为是基于 ...

  3. Robot Framework之测试用例分层实战

    1.1  测试用例的第一层(交互层) 1. 创建项目资源(Resource). 操作步骤: 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 mykeywo ...

  4. 执行robot framework 的测试用例 命令行pybot使用方式

    1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...

  5. Robot Framework - 2 - 创建测试库

    04- 创建测试库--基础概念 Robot Framework 实际的测试能力是由测试库提供的. ***** 支持的编程语言 Robot Framework 自身是用 Python 编写的,能使用 P ...

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

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

  7. Robot Framework - 4 - 创建和扩展测试库的示例

    创建和扩展Library的示例 示例:Check status on Linux OS 创建与使用library的基本步骤:           1--- library实现的内容和实现的方式     ...

  8. Robot Framework - 3 - 测试库API

    08- 创建测试库--发布测试库 ***** 测试库文档 为了便于维护,测试库文档应该从源代码中生成. Robot  Framework 有自己的文档工具 libdoc.py生成 API 文档. 一个 ...

  9. Robot Framework自动化测试框架初探

    Robot Framework是一款python语言编写,通用的功能自动化测试框架.它使用了比较易用的表格数据语法,基于关键字驱动测试,主要用来验收测试和验收测试驱动开发(ATDD). 本文主要介绍R ...

随机推荐

  1. KNN Python实现

    KNN Python实现 ''' k近邻(kNN)算法的工作机制比较简单,根据某种距离测度找出距离给定待测样本距离最小的k个训练样本,根据k个训练样本进行预测. 分类问题:k个点中出现频率最高的类别作 ...

  2. vue项目中编写一个图片预览的公用组件

    今天产品提出了一个查看影像的功能需求. 在查看单据的列表中,有一列是影像字段,一开始根据单据号调用接口查看是否有图片附件,如果有则弹出一个全屏的弹出层,如果没有给出提示.而且,从列表进入详情之后,附件 ...

  3. [模拟][NOIP2015]神奇的幻方

    神奇的幻方 题目描述 幻方是一种很神奇的N∗ N矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N为奇数时,我们可以通过以下方法构建一个幻 ...

  4. POJ 2378.Tree Cutting 树形dp 树的重心

    Tree Cutting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4834   Accepted: 2958 Desc ...

  5. Linux学习笔记:Jenkins的使用(二)

    一些插件的使用 Deploy to container Plugin jenkins安装完成之后,添加插件 Deploy to container Plugin ,这个插件可以将打好的war包部署到t ...

  6. iOS dispatch_semaphore_t(信号量)和 2.dispatch_group_t (组)

    2017年,回望过去,前半年还致力于iOS开发,后半年就开始了python的漫漫之路,一路上走走停停,不过还好,总的来说,2017是收获的一年,也是付出的一年.2018加油! 话题转回来,关于线程执行 ...

  7. session随笔

    ·由于cookie中不能保存很多信息,于是Session出现来完成这个功能. ·Session的作用就是在服务器保存一些保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie, ...

  8. 树莓派RaspBerry账户初始化设定

    1 第一次安装系统进入后默认账户是pi/raspberry  root账户是默认锁定的 sudo passwd root 设置root账户密码 sudo passwd --unlock root 开启 ...

  9. 安装 redis 拓展

    PHP API 20121113 PHP Extension 20121212 Zend Extension 220121212 Zend Extension Build API220121212,T ...

  10. HTTP协议 与 TCP协议 的区别

    TCP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. TCP/IP和HTTP协议的关系,从本质上来说,二者没有可比性,我们在传输数据时,可以只使用(传输 ...