官网:传送门
from hyrobot.common import *
步骤
STEP(1, '登录系统')
//-- 第 1 步 -- 登录网站
检查点
list = ['客户', '药品', '订单']
CHECK_POINT('侧边栏菜单是否正确',list == ['客户', '药品', '订单'])
//** 检查点 ** 侧边栏菜单是否正确
//----> 通过
在终端内打印
INFO('打印内容')
//打印内容
hyrobot 全局存储对象 GSTORE
def open_browser():
print('打开浏览器')
wd = webdriver.Chrome()
wd.implicitly_wait(5)
# 使用黑羽robot 全局存储对象 GSTORE
GSTORE['global_webdriver'] = wd
return wd
# 获取 全局使用的 webdriver 对象
def get_global_webdriver():
return GSTORE['global_webdriver']
公共代码放入库中
公共代码用自定义函数,放入到lib目录下。 //比如:打开浏览器open_browser 管理员登录gly_login
初始化、清除、共享数据
清除
(英文叫 teardown
)
黑羽robot的初始化/清除(和robotframework一样)支持 3种方式
- 单个用例的初始化、清除
- 整个用例文件的初始化、清除
- 整个用例目录的初始化、清除
单个用例的初始化、清除
class c0101:
name = '管理员首页 - UI-0101'
# 初始化方法
def setup(self):
wd = open_browser()
mgr_login(wd)
#清除方法
def teardown(self):
wd = get_global_webdriver()
wd.quit()
# 测试用例步骤
def teststeps(self):
# 获取webdriver对象 对应 已经登录好的浏览器
wd = get_global_webdriver()
STEP(1, '获取左侧菜单信息')
用例文件的初始化、清除
整个 用例文件 的初始化、清除 是在 文件中 添加全局函数 suite_setup、suite_teardown
from hyrobot.common import *
from lib.webui import *
from time import sleep
def suite_setup():
INFO('suite_setup')
wd = open_browser()
mgr_login(wd)
def suite_teardown():
INFO('suite_teardown')
wd = get_global_webdriver()
wd.quit()
class c0101...
class c0102...
套件目录的初始化、清除
使用 整个用例文件的初始化、清除
,就是 在这个目录下面创建名为 __st__.py
的文件。
和套件文件一样,套件目录的 的初始化、清除 也是在 文件中 添加全局函数 suite_setup、suite_teardown。
缺省初始化、清除
定义 名称为 test_setup
和 test_teardown
的全局函数。
如果在 用例文件 中定义了 全局函数 test_setup
,如果 该文件中 有用例本身没有初始化
方法, 执行自动化的时候就会对该用例,使用这个 test_setup 初始化
如果在 用例文件 中定义了 全局函数 test_teardown
,如果 该文件中 有用例本身没有清除
方法, 执行自动化的时候就会对该用例,使用这个 test_teardown 清除。
根据名称挑选
通过 --test
或者 --suite
命令行参数 来指定执行哪些用例或者套件,而且还支持用通配符的方式。
--test testA # 执行名为 testA 的用例
--test testA --test testB # 执行名为 testA 和 testB 的用例
--test test* # 执行名字以 test 开头的用例
--suite 订单管理 # 执行 名为 订单管理 的套件
当要执行指定执行名称的用例太多,可以使用参数文件,可以把所有的参数都放在参数文件中,比如,创建一个名字为 args 的参数文件:
--test *0301
--test *0302
--test *0303
--test *1401
--test *1402
一行一个参数
然后 run -A args
根据标签挑选
根据用例的 标签
来挑选用例
给用例添加标签
给用例添加标签有如下几种方式
- 套件文件全局变量 force_tags
force_tags = ['登录功能','冒烟测试','UI测试'] //该文件里面所有测试用例都具有了这些标签
标签一定要放在列表中,即使只有一个标签
在测试套件目录初始化文件__st__.py定义了一个这样的 force_tags 全局变量, 那么该目录里面所有测试用例都具有了该tag
- 测试用例类的 tags 静态属性
class c00001:
name = '添加订单 - 00001'
# 用例标签,可选
tags = ['登录功能','冒烟测试','UI测试'] //本测试用例就具有了这些标签
根据标签挑选
执行自动化的时候,我们可以通过命令行参数,指定标签,从而挑选要执行的测试用例
# 执行包含 标签 '冒烟测试' 的用例.
--include 冒烟测试
# 执行不包含标签 '冒烟测试' 的用例.
--exclude 冒烟测试
# 执行 有冒烟测试、UITest 两个标签的用例
--include 冒烟测试ANDUITest
# 执行 有 冒烟测试 或者 UITest 标签 的用例
--include 冒烟测试 --include UITest
# 执行标签格式为 A*B 的用例,比如 A5B, AB, A444B
--include A*B
指定关键测试用例
hyrobot 执行时,可以指定用例是否是 关键(critical)
测试用例。
测试中有关键测试用例没有通过,整个测试就被视为测试不通过。
hyrobot 执行测试时,如果没有命令行参数特别指定,每个测试用例都被视为关键测试用例。
通过命令参数 --critical
或 --noncritical
后面加 标签名称 来指定哪些用例 是 关键用例 或者 非关键用例。
run --critical first //指定 只有具有 first 标签的用例才是关键用例 其它都不是
run --noncritical first //指定 具有 first 标签的用例是非关键用例,其他用例都是关键用例。
run --critical basic* --critical important* //指定 具有 以 basic 开头 或者 important开头 的标签 的用例都是关键用例,其他用例都不是关键用例。
特殊参数
清除所有robot用例文件
使用参数 run.bat --delrf
删除已经存在的 robotframework格式的用例,不执行测试
只转化Python用例为robotframework格式用例
使用参数 run.bat --torf
只执行转化Python用例为RF用例,不执行转化好的RF测试用例
只运行测试
使用参数 run.bat --runrf
直接执行已经存在的robotframework用例,不执行转化Python用例为RF用例操作
只汉化测试报告
使用参数 run.bat --hanrf
只执行把测试报告汉化的工作,不执行转化和测试
调试
debug 日志级别
在命令行加上 -L debug
参数,使得日志信息更加详细
run -L debug //如果有错误,会打印详细的错误信息,方便定位。
pycharm断点调试
hyrobot 调用 Robotframework 执行测试用例,其实就是 执行类似如下的命令
python -m robot.run cases
本质上就是一个python程序,当然我们可以在pycharm中执行,以前设置断点的方法依然可以使用
但是我们需要从pycharm里面运行,就需要配置运行参数,点击配置
然后,如下图所示,进行配置。注意下图方框里面要点击箭头,从 Script path 改为 Module name
这样设置,执行的时候,就等于执行了下面的命令
cd E:\tmp\autotest_bysms
python.exe -m robot.run cases
然后再点击debug的图标,就可以进行断点调试了。
🎉