# **Robot Framework框架分享**
## 功能测试可以覆盖所有接口，那为什么还要接口测试？  

* 接口对应的功能可能有很多，所以接口测试可以提前预防问题  
* 接口测试可能测出功能检查不到的问题  
* 功能测试注重业务逻辑、ui;接口测试注重数据输入和返回  
* 接口测试可以接入自动化持续集成  

[接口测试资料分享](https://www.cnblogs.com/imyalost/p/5832672.html)

## 一、Robot Framework框架安装（方法仅适用于python2.7）  
Robot Framework：是一款python编写的功能自动化测试框架。具备良好的可扩展性，支持关键字驱动，可以同时测试多种类型的客户端或者接口，可以进行分布式测试执行  

## 框架安装流程：  
* 获取Python 2.7 同时安装python的时候选上pip工具安装  
* pip install robotframework  
* pip install robotframework-ride  
* 注意：robotframework-ride是基于wxPython的，必须先安装wxPython。此处先装robotframework-ride是因为robotframework-ride对于版本的要求很高，必须一一对应，你去下载最新版的wxPython，再来装最新版的robotframework-ride，然后运行会发现失败  
* wxPython下载路径：  
* https://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/  
* 安装requestslibrary库（接口测试用到）  
* pip install robotframework-requests  

## 二、常用关键字介绍  
### 1. 内建关键字  
* set variable定义变量关键字  
用法：${*}	set variable	aa/${*}
* create dictionary定义字典关键字  
用法：${*}	create dictionary	aa=bb/aa=${bb}/aa bb
* log日志打印关键字，增强日志，方便调试用例  
用法：log	${*}/--用例开始--
* set variable if如果条件真则变量值为*  
用法：${*}=	set variable if	 aa==0/aa>0/aa<0  

### 2. RequestsLibrary库关键字 
* Create session创建会话关键字  
用法：Create session    alias=${name}    uri    ${header}
* post/get/delete/put request 发送会话  
用法：${res}    post/get/delete/put request	${name}	   ${path}    ${data}
* ${res}是对象，对象属性中有${res.status_code}和${res.content}两个属性，可以利用to json方法进行格式转换后对数据进行处理  
http://www.robotframework.net/?/article/91  
* to json 目标对象转换为json格式  
用法：${*}    to json    ${aa}

## 三、Jmeter和Robot Framework接口测试框架对比  
Jmeter界面化比较友好，但是可以使用场景比较单一，对于多请求场景的接口用例不是很友好，以及数据校验这块需要单独添加，如果接口用例比较多，对于数据查看以及数据校验会很繁琐；Robot Framework需要一定的python基础，安装流程比较复杂，且ride编辑界面只支持到python2.7，优点是可以设置公共变量，公共关键字，可以查看关键字使用方法，场景可以多样化，对于结果取回和结果校验比较简单，日志功能强大。  
Jmeter以线程组为单位，且Jmeter工具自身添加限制每个层级可以添加的插件  
![图片10](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8710.png)
![图片11](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8711.png)
![图片12](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8712.png)
监听器=>查看结果树：这个插件必须添加，可以查看线程的执行情况，可以查看返回值，请求值
![图片13](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8713.png)
断言=>响应断言：这个插件可以对线程的返回值进行校验
![图片14](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8714.png)
Robot Framework  
图形界面示例  
![图片15](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8715.png)
![图片16](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8716.png)
![图片17](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8717.png)
新建关键字  
![图片18](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/%E5%88%98%E8%B4%B5/%E5%9B%BE%E7%89%8718.png)



