hyrobot-自动化测试框架,基于robotframework二次开发


官网:传送门

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_setuptest_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的图标,就可以进行断点调试了。


🎉


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM