hytest框架整理

声明hytest 自动化软件测试框架 永久 开源免费,请大家放心使用。项目 Github 网址hytest 简介点击这里,边看视频讲解,边学习以下内容hytest (黑羽test)是白月黑羽自己研发的自动化测试框架,它非常适合 做 系统测试 自动化, 而相比之下,pytest、unittest 更适合白盒的单元测试、集成测试。它有如下优点:上手非常简单hytest 让大家直接用 Python 来写测试用例。如果你有 Python编程经验,1小时就可以上手,1天就可以灵活使用。操作直观易懂
摘要由CSDN通过智能技术生成

声明
hytest 自动化软件测试框架 永久 开源免费,请大家放心使用。

项目 Github 网址

hytest 简介
点击这里,边看视频讲解,边学习以下内容

hytest (黑羽test)是白月黑羽自己研发的自动化测试框架,它非常适合 做 系统测试 自动化, 而相比之下,pytest、unittest 更适合白盒的单元测试、集成测试。

它有如下优点:

上手非常简单

hytest 让大家直接用 Python 来写测试用例。

如果你有 Python编程经验,1小时就可以上手,1天就可以灵活使用。

操作直观易懂

测试用例以 目录文件结构存放,清晰明了

初始化清除 机制清晰灵活

可以灵活地 挑选 要执行的测试用例

漂亮的测试报告

本教程 通过一个网站系统的自动化 为例 来讲解 hytest。

点击这里先学习Selenium Web自动化

以前我们开发过基于 robotframework 的自动化框架 - 黑羽robot
但是现在我们推荐使用 黑羽test 。

如果您依然想使用黑羽robot, 可以点击这里查看相关教程

安装、执行
安装 hytest 非常简单,执行如下命令即可:

pip install hytest 
hytest 需要 Python 3.7 或者 更高版本

执行hytest 自动化非常简单:

只需要新建一个 项目目录 , 里面创建一个名为 cases 的子目录用来存放测试用例代码即可。

我们可以使用示例代码先看看。

点击这里下载zip文件, 解压后产生一个 cases示例目录。

这里目录里面的结构和自动化用例代码,后面会有讲解。

我们先运行hytest自动化测试,看看效果如何。

非常简单,只需要

打开命令行窗口

进入自动化代码根目录,也就是 cases 的上层目录 (注意不是cases目录,是cases的父目录)

运行 hytest

运行命令 hytest 实际上就是执行如下的命令

python -m hytest.run

如果你是苹果Mac系统, 安装时或许不能自动产生hytest可执行程序,这时可以执行命令

python3 -m hytest.run

大家可以看一下执行后的命令行窗口界面输出,展示了执行每个用例的结果。

执行自动化,会产生一个log目录。里面有详细的 测试日志 和 测试报告。

测试报告是HTML格式的,会自动在浏览器中打开,可以通过右上角的浮动菜单:

切换 精简、详细 两种模式 方便浏览内容

跳转到下一个、上一个错误 方便在出现问题是,快速定位到问题所在点

关于hytest 命令行的参数使用,后面会有详细讲解,以后如果忘了某个命令参数可以执行 hytest -h 来查看参数说明。

以后真正做项目自动化的时候,通常还需要创建一些其他的目录,比如

lib 目录

用来存放 测试用例 需要使用的共享代码库。

doc 目录

存放 一些说明文档

可以使用命令参数 --new 来创建一个 hytest 的自动化项目目录,里面会包含一个cases目录和一个示例代码文件。

比如,执行

hytest --new auto1

就会在当前目录下创建名为 auto1 的 项目目录。

用例目录结构
点击这里,边看视频讲解,边学习以下内容

我们先了解一下用例目录的 结构

自动化测试用例 是 写在 python 文件 中的 一个 python 类

对应一个测试用例文档里面的用例

一个 代码文件 可以存放 多个用例

多个代码文件可以用目录组织起来

cases 目录下面的 每个目录 和 py 文件 都 被称之为 测试套件(suite)

测试套件 是 测试用例的集合 , 通俗的说,就是 一组用例 。

为例方便管理,我们把功能相关的测试用例组合起来放在一起,成为某个测试套件。

包含 测试用例类 的 python 文件 称之为一个 套件文件

包含 套件文件的 目录 称之为 测试套件目录

用例类的定义
用例文件格式如下:

文件里面每个类对应一个用例。

类的 name 属性 指定 用例名

如果没有name 属性,那么类名就会被当做是用例名称

类的 teststeps 方法 对应 测试步骤 代码

测试步骤代码 就是自动化地 一步步执行测试用例 的程序。

所以一个类 必须要有 teststeps 方法,才会被 hytest 当做是一个测试用例类。

比如

# 建议:类名 对应 用例编号
class UI_0101:
    # 测试用例名字,也建议以用例编号结尾,方便 和 用例文档对应
    # 也方便后面 根据用例名称 挑选执行
    name = '管理员首页 - UI-0101'

    # 测试用例步骤
    def teststeps(self):

为了使我们的测试日志和报告 更加清晰的展示执行的过程, 我们可以调用 hytest 的一些库函数,输出 执行步骤、提示信息 、检查点信息。

代码最前面加上 如下代码 ,导入 hytest 库里面 的常用 函数

from hytest import STEP, INFO, CHECK_POINT

class UI_0101:
      
    def teststeps(self):
        
        STEP(1,'打开浏览器')
        var1 = 'sdf'
        INFO(f'var1 is {
     var1}')
        CHECK_POINT('打开成功', var1.startswith('1sd') ) 

        
        STEP(2,'登录')        
        CHECK_POINT('检查登录是否成功', True) 
    
        STEP(3,'查看菜单') 
        CHECK_POINT('检查菜单是否正确', True)  

STEP 函数

用来声明每个测试步骤,这样日志报告更清晰

INFO 函数

用来打印一些信息在日志和报告中,方便出现问题时定位。

当然,如果你在开发调试阶段也可以直接使用print,在终端查看内容

CHECK_POINT 函数

用来声明测试过程中的每个检查点,任何一个检查点不通过,整个测试用例就被认为不通过。

缺省情况下,一个检查点不通过,后面的测试代码就不会继续执行。

如果某个你希望检查点即使不通过,后续代码仍然继续执行,可以使用参数 failStop=False ,如下所示

 def teststeps(self):

     CHECK_POINT('即使不通过也不中止1', False, failStop=False)

     CHECK_POINT('即使不通过也不中止2', False, failStop=False)

具体的使用示例,参考讲解视频。

一个例子
点击这里,边看视频讲解,边学习以下内容

要讲解 自动化测试,需要一个 被测系统 。

我们使用 白月SMS系统 作为被测系统。

请大家点击这里,按照说明下载、安装、运行 白月SMS系统

针对该系统,现在有一批测试用例,准备自动化。 点击这里下载 白月SMS系统的测试用例文档,

我们先完成用例 UI-0101 的自动化

代码开发,请看视频讲解。对应的参考代码如下

参考代码如下

from hytest import *
from selenium import webdriver

class UI_0101:

    name =  '检查操作菜单 UI_0101'
 
    def teststeps(self):
        
        STEP(1,'登录网站')

        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-logging'])

        wd = webdriver.Chrome(options=options)
        wd.implicitly_wait(10)

        wd.get('http://127.0.0.1/mgr/sign.html')

        wd.find_element_by_id('username').send_keys('byhy')
        wd.find_element_by_id('password').send_keys('88888888')

        wd.find_element_by_tag_name('button').click()

        STEP(2,'获取左侧菜单信息')

        eles = wd.find_elements_by_css_selector('.sidebar-menu li span')

        menuText = [ele.text  for ele in eles]

        INFO(menuText)

        STEP(3,'检查菜单栏')

        CHECK_POINT('左侧菜单检查', menuText[:3] == ['客户','药品', '订单'])

        wd
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值