# RF
## 介绍
Robot framework是一款开源软件,基于Python语言编写
自动化测试框架,能够进行测试用例编写,组织测试计划,执行测试用例,输出测试结果等工作
具有良好的可扩展性,属于关键字驱动, 也具备数据驱动功能
可以进行分布式测试,也可以测试业务类型多样的接口
**使用简介**
测试用例可以用文本文件保存
以html格式提供易读的测试结果报告和日志
自身支持的测试库,包括Selenium,ssh, 数据库等测试
使用者可以自己创建特定需求的测试库,可用Python或Java语言编写
## 环境
1. 安装python3.7.4解释器, 安装路径D:Program Files (x86)Python37,自动添加环境变量path
D:Program Files (x86)Python37scripts 和 D:Program Files (x86)Python37
2. 安装Robot framework
```pip install robotframework```
可以指定安装的版本(推荐)
``pip install robotframework==3.1.2``
可以指定安装源
```
pip install robotframework -i https://pypi.tuna.tsinghua.edu.cn/simple
```
3. 检查安装 ```pybot --version```
如果报错,检查D:Program Files (x86)Python37scripts路径下有没有pybot.bat文件,如果没有可以手动添加一个
```
@Echo off
python -m robot.run %*
```
3. 安装RIDE集成开发环境
```
pip install robotframework-ride
```
4. 查看安装的库pip list
5. 打开RIDE界面
在python37scripts目录下有一个ride.py文件,在该目录下执行python ride.py即可
3. 安装需要的library(可选)
```
pip install robotframework-selenium2library -i https://pypi.tuna.tsinghua.edu.cn/simple
```
5. 安装Sublime text3(可选),然后需要下载sublime-robot-framework-assistant,解压放在Sublime的DataPackages目录下,设置Sublime robot framework语法高亮
## 自定义测试库
静态测试库接口
把python模块转换为测试库
把python模块(源文件或包)里的函数或类的方法映射为关键字
导入测试库使用的库名字与python的模块名或者类名一致
由类创建关键字
由函数创建关键字
反射机制
举例:
- 在Python的库目录D:Program Files (x86)Python37Libsite-packages下新建一个文件夹,取名为NewLibrary。
NewLibrary就是我们自定义的库的库名。
- 在NewLibrary目录下创建Python模块,即一个Python源文件,比如iperfclient.py
模块中的类方法runIperfClient将会映射成为自定义的关键字
```
#!/usr/bin/env python
#-*- coding: utf-8 -*-
class IperfClient(object):
def __init__(self):
pass
def runIperfClient(self, version, cmd):
print(version, cmd)
if __name__ == '__main__':
p1 = IperfClient()
p1.runIperfClient('version2', 'iperf -c 192.168.1.133 -u -b 100M -l 1200 -i 1')
```
- 在NewLibrary目录下创建文件``__init__.py``,文件名必须固定这样。
该文件的功能,就是把关键字类暴露出来,让rf能知道。
```
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from NewLibrary.iperfclient import IperfClient
class NewLibrary(IperfClient):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
```
- 这样我们已经自定义了自己的测试库,接下来就可以使用它了
首先在rf中import这个测试库,在suite层级导入,显示黑色表示导入成功
然后在testcase层级使用测试库中的关键字,关键字显示蓝色表示正常。
## Remote远程库
- 使用场景:
测试需要跨越多个物理机器,且有的测试库也必须部署在被测系统上。
比如,RF运行在PC A上,但是被测试系统在PC B上,测试库在部署在PC B上,这是就可以在PC A上调用RF提供的远程库接口,去实际调用PC B上的测试库,
- 远程库接口的原理
什么是远程库接口技术呢?其实很简单,远程库接口就是把原来的测试库变成了三部分
一部分我们可以叫他远程库(Remote Library),第二部分叫做远程服务器(Remote Server),第三部分是真正的测试库(Test Library)。测试库提供真正的测试功能,它被远程服务器包裹起来,通过XML-RPC协议被远程库访问(见下图)。它的实现思路说白了就是设计模式中的Proxy模式。
![image-20210531100450582](D:自动化测试imagesimage-20210531100450582.png)
使用举例:
- 下载robotremoteserver.py放置在远程服务器PC B上
- 在PC B上编写测试库,比如iperfserver.py文件,
文件中定义的类方法runIperfServer将会被映射成关键字
其中host是PC B的地址,PC A通过这个地址连接到PC B
```
import sys
from robotremoteserver import RobotRemoteServer
class iperfServer(object):
def __init__(self):
pass
def runIperfServer(self, version, cmd):
print(version, cmd)
if __name__ == '__main__':
RobotRemoteServer(iperfServer(), host = '192.168.100.53', port = 8270, *sys.argv[1:])
```
- 在PC B上运行``python iperfserver.py``
- 接下来就可以在PC A上使用远程库了
首先在PC A的RF的suite层级上导入Remote库, 参数是远程服务器的地址和端口
然后就可以在testcase层级使用远程库里的关键字了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)