自动化测试框架学习总结

embedded/2025/3/15 2:20:15/

视频: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'
这种错误。

初始化、清除:


http://www.ppmy.cn/embedded/172640.html

相关文章

【hot100】实现Trie(前缀树)

一、思路 这题的思路很简单,其实就是一个26叉树,但是这个数不同通过通常的左右节点属性,而是一个数组来存储的,每个数组下标存储下层的数组。其中有以下需要注意的点: 1.private Trie[] children; 这个说明孩子节点是…

软考高级《系统架构设计师》知识点(十三)

系统架构设计 软件架构的概念 一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。 体系结构并非可运行软件。确切地说,它是一种表达,使软件工程师能够&#xff1a…

《今日AI-人工智能-编程日报》

1. AI行业动态 1.1 Manus通用智能体初成型,开启AIAgent新时代 中泰证券发布研报称,首款通用型AI智能体Manus已问世,能够将复杂任务拆解为可执行的步骤链,并在虚拟环境中灵活调用工具,标志着AI从“Reasoner”走向“Ag…

laravel项目中使用FFMPeg 剪裁视频

# 运行环境需安装的软件 ffmpeg # 安装的扩展 pbmedia/laravel-ffmpeg: ^8.3 # 扩展文档 https://packagist.org/packages/pbmedia/laravel-ffmpeg # 引入的类 use FFMpeg\Coordinate\TimeCode; use FFMpeg\Format\Video\X264; use FFMpeg\Exception\RuntimeException; use …

Machine Learning中的模型选择

选择适合的机器学习模型是构建高效、准确模型的关键步骤。以下是决定选用哪个模型的主要考虑因素和步骤: 1. 明确问题类型 首先,明确你要解决的问题类型: 分类问题:预测离散类别(如垃圾邮件分类、图像识别&#xff09…

《C#上位机开发从门外到门内》2-3:SPI总线协议详解及应用实践

文章目录 一、引言二、SPI总线协议的基本原理三、SPI通信模式详解 —— CPOL与CPHA3.1 时钟极性(CPOL)3.2 时钟相位(CPHA)3.3 四种SPI模式 四、主从设备通信机制4.1 通信流程概述4.2 数据帧结构与传输细节4.3 主设备与从设备的协同…

用PHP的Guzzle库编写的图片爬虫程序

使用 PHP 的 Guzzle 库编写一个图片爬虫程序是一个非常常见的任务,Guzzle 是一个流行的 HTTP 请求库,允许你轻松地发送请求和处理响应。 下面是一个使用 Guzzle 编写的图片爬虫程序示例。此程序将从指定的网页中提取图片链接并将图片下载到本地。 1、安…

无法解析插件 org.springframework.boot:spring-boot-maven-plugin:2.4.13报错异常

今天导入项目的时候,Maven突然加载异常爆红 重新配置了一下用户文件查看包里是否有我们需要的版本(这个版本必须与父文件版本相同), 找到你自己的maven文件地址 路径:Maven\repository\org\springframework\boot\spri…