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. docker--在centos镜像安装mysql

    一.安装centos镜像 1.拉取最新版本centos镜像(拉取centos7 则使用centos:7即可) docker pull centos:lasted 2.查看已有镜像 docker ima ...

  2. win 常用CMD命令备忘

    一.进入某个硬盘 1.直接输入盘符加冒号,如想进入D盘,则输入命令[d:] . 命令:C:\Windows\system32>d: 结果:d:\> 二.进入某个文件夹 1.输入cd加文件夹 ...

  3. OO第二单元多线程电梯总结

    OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...

  4. Nexus 3 搭建 npm 私服 (windows)

    Nexus 3 搭建 npm 私服备忘 下载与安装 在官网下载Nexus Repository Manager OSS 3.x, 解压至任意位置. 管理员运行 powershell, 切换到 nexu ...

  5. dom4j移除节点不成功

    在使用dom4j的时候想移除xml节点,经常使用remove来移除节点,通过整个文档或者根节点删除某一个子节点,但如果子节点不是儿子节点,在dom4j中就无法删除.在dom4j中移除节点必须使用父节点 ...

  6. Asp.net Zero 应用实战-最初部署问题

    此时用的是aspnet-zero-core-4.3.0 1.前两天vs2017刚刚最新升级了,打开后就报错,然后就根据提示把每个项目文件中添加了 <PropertyGroup> <E ...

  7. 开发快平台(M302I小e开发板系列教程)

    开发快平台(M302I小e开发板系列教程) 开发块平台ESP8266模块相关理解 一. M302I小e开发板源码注释,源码基于:v1.4.0.8-u34.zip 1. user_main.c /*** ...

  8. 图解HTTP第九章

    基于 HTTP 的功能追加协议 1>HTTP 的瓶颈有哪些: 2>消除 HTTP 瓶颈的 SPDY,缩短 Web 页面的加载时间 [1]SPDY 的设计与功能 [2]SPDY 消除 Web ...

  9. PHP配置文件详解php.ini

    [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...

  10. 使用kbmmw 生成客户端delphi函数原型

    前面我们讲了使用swagger 生成java,php 的客户端调用函数原型. 对于delphi,其实很遗憾,不能直接生成客户端函数原型代码. 不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们 ...