视频:hytest - 测试自动化框架_哔哩哔哩_bilibili
资料:hytest 框架 - 白月黑羽
hytest 简介
hytest
(黑羽test)是白月黑羽自己研发的自动化测试框架,它非常适合 做 系统测试 自动化, 而相比之下,pytest、unittest 更适合白盒的单元测试、集成测试。
特别注意,hytest是基于selenium工具的测试框架。语法用的是selenium的语法。
安装:
pip install hytest
运行:在要测试的目标软件的上一级目录使用: python -m hytest.run
结果:会自动生成一个中文版的测试报告。
如果要生成一个英文版的测试报告,只需要加上 --lang =en
用例目录结构:
自动化测试用例
是 写在 python 文件 中的 一个 python 类。对应一个测试用例文档里面的用例-
一个 代码文件 可以存放 多个用例
-
多个代码文件可以用目录组织起来
cases
目录下面的 每个目录 和 py 文件 都 被称之为 测试套件(suite)。测试套件
是 测试用例的集合
, 通俗的说,就是 一组用例
。
总结:要运行登录测试.py,不能通过python运行。而是在hytestProject这级目录的终端,使用pytest命令即可,log目录是使用pytest命令之后生成的目录。
前置环境:创建一个cases目录。
用例类的定义:
文件里面每个类对应一个用例。类的 name
属性 指定 用例名。若没有name属性,那么类名会被当做用例名称。类的testeps方法 对应测试步骤代码。
# 建议:类名 对应 用例编号
class UI_0101: //这个是类名UI_0101# 测试用例名字,也建议以用例编号结尾,方便 和 用例文档对应# 也方便后面 根据用例名称 挑选执行name = '管理员首页 - UI-0101' //name表示测试用例名# 测试用例步骤def teststeps(self): //teststeps()方法,是步骤
最常用函数和结构:
from hytest import STEP, INFO, CHECK_POINTclass UI_0101:def teststeps(self):STEP(1,'打开浏览器') //声明每个测试步骤var1 = 'sdf'INFO(f'var1 is {var1}') //打印信息在日志报告中,
//而使用print是打印在终端中。CHECK_POINT('打开成功', var1.startswith('1sd') ) STEP(2,'登录') CHECK_POINT('检查登录是否成功', True) //声明测试过程中的检查点,
//任何一个测试点不通过就不会继续执行。
//通过CHECK_POINT('即使不通过也不中止',False,failStop=False)可以执行之后的语句STEP(3,'查看菜单') CHECK_POINT('检查菜单是否正确', True)
一个例子:
注意,资料上使用的wd.find_element_by_id('username').send_keys('byhy')
这种方式已经淘汰了。
from hytest import *
from selenium import webdriver
from selenium.webdriver.common.by import Byclass UI_0101:name = '检查操作菜单 UI_0101'def teststeps(self):STEP(1,'登录网站')options = webdriver.EdgeOptions()options.add_experimental_option('excludeSwitches', ['enable-logging'])wd = webdriver.Edge(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.quit()
执行结果:
公共代码放入库中:
资料上运行通过不了,可以尝试使用hytest +测试的目录
而只使用hytest,会出现:ModuleNotFoundError: No module named 'hytestProject'
这种错误。