hyrobot 使用说明1
前言
黑羽robot是一款自动化测试框架。要学习它,您需要具备一些自动化测试的基本概念。
本教程讲解 的案例 是 一个 web 系统的自动化。 如果你 还不了解 基于 selenium 的 web自动化,请先 学完我们的 web自动化教程。
黑羽robot 和 RobotFramework 的关系
黑羽robot
是基于 RobotFramework
, 增强的一款自动化框架。
为什么要基于 RobotFramework ?
RobotFramework 作为系统测试框架,有如下优点:
-
用目录文件结构存放测试用例,清晰明了
-
清晰灵活的
初始化清除
机制 -
可以灵活地 挑选 要执行的测试用例
-
漂亮的测试日志和报告
-
国内很多企业采用,跳槽就业有优势
那么, RobotFramework有 缺点
吗?
白月黑羽认为,最大的缺点就是:反人类的 测试用例语法
。
可能 RobotFramework 的开发者 认为,用Python语言写测试用例比较难,所以自己发明了一套语法写自动化测试用例。
实际上,不但没有降低写用例的难度,反而提高了。 因为 RF的那套语法 反而比 Python 更难学难用。
特别是处理稍微复杂点的任务,比如循环、判断、字典里面包含列表这种 复杂些的数据结构, 用 RobotFramework 可以说是太痛苦了。
而且,调试 RF用例 也 非常的麻烦。
想做好自动化开发,却不想学编程语言? 梦该醒了。
那么,黑羽robot 在 RobotFramework 基础上,增强了什么?
- 拨乱反正,直接用 Python 来写测试用例。
饱受RF语法折磨的人,会发现再也不需要学习RF奇葩的语法了,一切都是Python。只要你有Python语言基础,一切都是那么的轻松自然。
- 汉化了 测试报告,对中国用户友好一些。
安装
安装 被测系统
要讲解 自动化测试,需要一个 被测系统
。
我们使用 白月SMS系统
作为被测系统。
针对该系统,现在有一批测试用例,准备自动化。 点击这里下载 白月SMS系统的测试用例文档,
接下来,我们就使用 黑羽robot 框架, 开发这些用例的自动化。
安装 黑羽robot
首先确保你电脑上安装好了 Python 3.7 或者 3.8
版本的解释器
- 安装RF
黑羽robot基于Robot Framework ,所以必须先安装RobotFramework
直接执行如下Pip命令即可:
pip install robotframework
- 安装黑羽robot
解压下载的zip包,会产生一个名为 autotest_hyrobot
的目录, 这就是hyrobot的自动化项目目录。
你修改该目录的名字,比如我们要讲解 自动化测试 白月SMS系统
, 就可以改名为 autotest_bysms
建议:用PyCharm 等IDE直接打开项目文件夹,一定要 确保 hyrobot
目录 在项目根目录下面,如下
项目目录结构
黑羽robot 项目目录中包含
-
cases 目录
里面存放 自动化测试用例代码
-
cfg 目录
里面存放 配置文件
-
hyrobot 目录
里面存放 hyrobot库 和 工具 代码, 开发者不需要 修改里面的内容
-
lib 目录
里面存放 自动化测试用例 使用的 库
-
run.bat
Windows下 运行 黑羽robot, 执行自动化测试 的 脚本
-
run.sh
苹果 MacOS 下 运行 黑羽robot, 执行自动化测试 的 脚本
注意:
苹果用户,需要先执行
chmod +x run.sh
增加执行权限运行测试时,执行
./run.sh
命令
用例和套件
我们先了解一下用例目录的 结构 和 基本概念
cases
目录下面的 每个目录 和 py 文件 都 对应一个 测试套件
所谓测试套件,就是 测试用例的集合
。
我们把功能相关的测试用例组合起来放在一起,成为某个测试套件。
-
测试套件 可以是 目录 也可以是 文件
-
测试用例代码 是在测试套件py文件 中的
-
一个套件文件文件 可以存放 多个用例
-
测试套件目录可以包含 子套件目录 和 子套件文件
用例文件的编写、执行、产生日志报告
编写用例
用例文件格式如下:
文件里面每个类对应一个用例。
类的 name
属性 指定 用例名
类的 teststeps
方法 里面的代码 就是 测试步骤
特别注意
: 用例类名 一定要保证唯一
,推荐包含用例编号。比如
# 类名保证唯一,推荐包含用例编号
class UI_0101:
# 测试用例名字
name = '管理员首页 - UI-0101'
# 测试用例步骤
def teststeps(self):
代码最前面加上
from hyrobot.common import *
导入 hyrobot 库,库里面有一些函数 和
声明每个步骤使用 STEP 库函数
打印信息用 INFO 库函数
检查点用 CHECK_POINT 函数。
具体的使用示例,参考讲解视频。
执行用例
执行用例需要
-
打开命令行窗口
-
进入到自动化项目根目
-
运行 run.bat
具体的使用示例,参考讲解视频。
日志和报告
执行完后,就会产生 汉化的 日志 和 报告。参考讲解视频。
数据驱动用例
做过自动化测试的朋友经常听说过 数据驱动
(或者面试的时候被问到过)。
什么是数据驱动?
如果有一批测试用例,具有 相同的测试步骤
,只是 测试参数数据不同
。
自动化测试时,把测试数据从用例代码中 分离
开来,以后增加新的测试用例,只需要修改数据。
这就是数据驱动。
举个例子:
某系统 登录功能的测试,有一批测试用例,其执行的步骤几乎都是一样的,只是使用的测试参数不同。
比如:
-
不输入用户名,输入正确密码
-
输入比正确用户名后面少一个字符,输入正确密码
-
输入比正确用户名后面多一个字符,输入正确密码
-
输入比正确用户名前面少一个字符,输入正确密码
-
输入比正确用户名前面多一个字符,输入正确密码
-
输入正确用户名,不输入密码
-
输入正确用户名,输入比正确密码后面多一个字符
上面每种输入对应一个用例, 聪明的读者应该能想到 可以把整个测试逻辑封装到一个库函数中,如下所示
def login(username,password):
# 下面写登录流程
但是,测试用例仍然需要定义一个个的类,如下, (假设正确的用户名为 user,密码为 123456)
class c00101:
name = '登录测试 - c00101'
def teststeps(self):
msg = login('','123456')
CHECK_POINT(msg, '错误的用户名密码')
class c00102:
name = '登录测试 - c00102'
def teststeps(self):
msg = login('use','123456')
CHECK_POINT(msg, '错误的用户名密码')
# 下面还有类似的用例定义
这样做,当然可以,就是有些麻烦了。
这种情况可以使用 HyRobot用例 的 数据驱动格式,只需如下定义即可
class c_login_x:
# cases里面每个元组定义每个用例的数据
# 第一个数据是用例名称, 后面的数据是用例参数
cases = [
('登录 - c00101', '','123456'),
('登录 - c00102', 'use','123456'),
('登录 - c00103', 'user1','123456'),
]
def teststeps(self, para_index):
# 取出参数
username, password = self.cases[para_index][1:]
# 下面写登录流程
这样,我们就不需要定义那么多的测试用例类了, 而且测试数据也可以集中存放。
视频讲解中的被测系统白月SMS如何安装,看课后练习部分说明
视频讲解中的 测试用例代码如下
from hyrobot.common import *
from selenium import webdriver
import time
class c_login_x:
cases = [
('登录 - c00101', 'byhy1','888888'),
('登录 - c00102', 'byh','888888'),
('登录 - c00103', '','888888'),
]
def teststeps(self, para_index):
# 取出参数
username, password = self.cases[para_index][1:]
# 下面写登录流程
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://127.0.0.1/mgr/sign.html')
driver.find_element_by_id('username').send_keys(username)
driver.find_element_by_id('password').send_keys(password)
driver.find_element_by_css_selector('button[type="submit"]').click()
time.sleep(2)
alterText = driver.switch_to.alert.text
print(alterText)
CHECK_POINT('弹出提示', alterText == '登录失败 : 用户名或者密码错误')
driver.quit()
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
课后练习
题目1
根据教程
-
下载安装 黑羽robot
-
下载安装 白月SMS 系统
-
使用 hyrobot,完成用例
UI-0101
和UI-0102
的自动化
参考答案
参考下一节课的开始部分