web 自动化之 Unittest 四大组件
文章目录
- 一、如何开展自动化测试
- 1、项目需求分析,了解业务需求 web 功能纳入自动化测试
- 2、选择何种方式实现自动化测试
- 二、Unittest 框架
- 三、TestCase 测试用例
- 四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作
- 五、TestSuite 测试套件 & TestLoader 用例加载器
- 1、TestSuite 测试套件
- 2、TestLoader 用例加载器-用例集
- 六、TestRunner 测试运行器 执行用例,输出测试结果
- 1、用例执行结果状态:
- 2、unittest 提供生产测试报告的模块 TextTestRunner 生成文本格式测试报告
一、如何开展自动化测试
1、项目需求分析,了解业务需求 web 功能纳入自动化测试
web 功能:
- 1、新功能 手工测试
- 2、老功能 回归 冒烟用例 纳入自动化测试
2、选择何种方式实现自动化测试
- 1、工具 robotframework
- 2、独立搭建 web 自动化测试框架
- 3、编写自动化测试用例
一边写用例,一边调试用例脚本(用例编辑/封装/测试数据/脚本调试)
结合jenkins进行持续集成 - 4、执行自动化测试用例
- 1、定时执行、一键式执行
- 2、执行策略
执行频率?—回归频率、转测试、上线前、
自动化测试执行环境----集成测试环境、预发布环境
- 5、测试报告
测试结果的汇总 - 6、维护脚本、优化框架
企业自动化测试岗位:- 1、业务自动化测试 项目自动化测试框架已经构建了 工作内容: 维护框架+用例编辑
- 2、平台自动化测试开发 参与自动测试框架构建与设计、+维护框架+用例编辑
二、Unittest 框架
Unittest 框架:框架=测试模块+测试管理模块+测试统计模块,python 的内置模块
import unittest
Unittest 框架四大组件:
- 1、TestCase 测试用例
- 2、TestFixture
- 3、TestSuite
- 4、TestRunner
三、TestCase 测试用例
unittest 中 TestCase 部分的规则:
- 1、用例类必须继承 Unittest.TestCase,并且以 test 开头
- 2、每条用例,都必须以 test 开头
- 3、用例执行的顺序按照 ASCII:0-9 a-z A-Z 顺序来执行用例
unittest也可以通过命令运行:
- 命令执行 TestShopnc 类下的所有用例: python -m unittest 用例文件名.用例类
- 执行某一条用例: python -m unittest 用例文件名.用例类.用例名称
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作
Web 自动化:的前置操作及后置操作
class TestShop(unittest.TestCase):# 前置操作def setUp(self):# 加载项目print("setUp 执行每条用例前都会执行函数代码,有 n 条用例,则会执行 n 次")@ classmethoddef setUpClass(cls):# 前置操作:连接数据,打开浏览器print("setUpClass 执行用例前会执行 ,总共只执行一次")# 后置操作def tearDown(self) -> None:# 后置操作:浏览器的关闭print("tearDown执行完每条用例前都会执行代码,有n条用例,则会执行n次")@ classmethoddef tearDownClass(cls) -> None:# 退出浏览器,关闭数据库连接,清理数据print("tearDownClass执行完所有用例之后会执行代码 ,总共只执行一次")
五、TestSuite 测试套件 & TestLoader 用例加载器
TestSuite 测试套件 & TestLoader 用例加载器:把需要执行的用例汇总到一起
1、TestSuite 测试套件
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 添加一个用例suite.addTest(TestShop('test01_login'))suite.addTest(TestShop('test02_select_goods'))# 添加多个用例case_list = [TestShop('test03_into_cart'),TestShop('test04_pay_goods')]suite.addTests(case_list)# 执行 main 函数unittest.main(defaultTest="suite")
2、TestLoader 用例加载器-用例集
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 用例加载器# 用例 TestLoader() suite# loadTestsFromTestCase 加载某个用例类(继承TestCase)下的所有用例# testcases = unittest.TestLoader().loadTestsFromTestCase(TestShop)# 利用默认加载器实现加载用例testcases = unittest.defaultTestLoader.discover('F:\Pycharm\TestShop\TestCase',pattern='test*.py')suite.addTests(testcases)unittest.main(defaultTest="suite")
六、TestRunner 测试运行器 执行用例,输出测试结果
1、用例执行结果状态:
- 用例执行成功
- E 用例有异常
- F 用例执行失败(断言失败)
2、unittest 提供生产测试报告的模块 TextTestRunner 生成文本格式测试报告
import unittest
from TestReport.testcase_01 import TestCase01
# 加载用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# 执行用例,生产对应的测试报告TextTestRunner
with open('F:/Pycharm/TestShop/TestReport/report.txt','w+') as f:# 文件写入测试结果unittest.TextTestRunner(verbosity=2,stream=f).run(testcases)
相关文章:
web 自动化之 Unittest 四大组件
文章目录 一、如何开展自动化测试1、项目需求分析,了解业务需求 web 功能纳入自动化测试2、选择何种方式实现自动化测试 二、Unittest 框架三、TestCase 测试用例四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作五、TestSuite 测试套件 & TestLoa…...

一、网络基础
IPv4:32位二进制 -- 点分十进制标识 192.168.1.1(连续的32位,为了好看方便每8位一段) IPv6:128位二进制 IP(Internet协议) 洪泛:除流量进入接口外的所有接口的复制 OSI模型&#…...

基于HTML+JavaScript+CSS实现教学网站
摘要 21世纪是信息化的时代,信息化物品不断地涌入我们的生活。同时,教育行业也产生了重大变革。传统的身心教授的模式,正在被替代。互联网模式的教育开辟了一片新的热土。 这算是对教育行业的一次重大挑战。截至目前,众多教育行…...

告别卡顿,图片查看界的“速度与激情”
嘿,小伙伴们!今天电脑天空给大家介绍一款超好用的图片查看神器——ImageGlass!这可不是普通的图片查看软件哦,它简直就是图片界的“全能王”。首先,它能打开的图片格式多到让你眼花缭乱,什么PNG、JPEG、GIF…...
基于STM32、HAL库的RN8209C电能计量芯片驱动程序设计
一、简介: RN8209C是一款高精度电能计量芯片,主要应用于单相电能表、智能插座、电力监控等领域。它具有以下特点: 支持全差分输入,可测量电压、电流、有功功率、无功功率、视在功率、功率因数等参数 内置24位Σ-Δ ADC,提供高精度测量 支持SPI和UART通信接口 内置温度传感…...
1 计算机网络
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言:点击跳转飞书文档[ 1. 第一章:概述:计网初识 ](https://zcny77krlrp8.feishu.cn/docx/U8T8d3PUOoMi7vxD4vGc8O51nrb)[2. 第…...

C++ - 类和对象 #日期类的实现
文章目录 前言 一、导言 二、构造 三、比较大小 1、实现大于 2、等于 3、大于等于 4、小于 5、小于等于 6、不等于 二、加减 1、加与加等 2、减与减等 3、、-- 4、日期-日期 三、流提取、流插入 1、流插入 2、流提取 四、日期类所有代码汇总 总结 前言 路…...
《 C++ 点滴漫谈: 三十七 》左值?右值?完美转发?C++ 引用的真相超乎你想象!
摘要 本文全面系统地讲解了 C 中的引用机制,涵盖左值引用、右值引用、引用折叠、完美转发等核心概念,并深入探讨其底层实现原理及工程实践应用。通过详细的示例与对比,读者不仅能掌握引用的语法规则和使用技巧,还能理解引用在性能…...

Redis 8.0携新功能,重新开源
01 引言 Redis从7.4版本起,将开源许可证改成 RSALv2(Redis 源代码可用许可证)与 SSPLv1(服务器端公共许可证)的双重授权策略。简单来说,就是不能随意商用。为了抵制Redis,Redis的替代品Valkey、…...
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明)
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明) 1 目标运动状态空间建模1.1 状态向量定义1.2 状态转移方程1.3 观测模型构建2 卡尔曼滤波核心算法实现2.1 初始化2.2 预测步骤2.3 更新步骤3 多传感器融合仿真验证3.1 传感器模型模拟3…...

从MCU到SoC的开发思维转变
目录 1、硬件设计 2、软件开发 3、调试与测试 4、电源管理 微控制器单元(MCU)和系统级芯片(SoC)是嵌入式开发中最常见的两种处理器类型。MCU以其简单、低功耗的特点,广泛应用于特定控制任务;而SoC凭借强…...

Eclipse SWT 1 等比缩放
Eclipse SWT 1 等比缩放 1 布局方式2 测试代码 1 布局方式 布局名称特点说明适合场景AbsoluteLayout绝对定位,控件位置和大小完全由开发者手动设置。特殊定制界面、不规则排版FillLayout简单线性布局,将所有子控件填满容器(水平或垂直方向&a…...

IP 地址、银行卡等多维数据于风险控制的作用
IP 地址、银行卡、手机号、身份证归属地等多维度身份数据,通过构建风险画像数据库,为交易反欺诈、广告营销检测、账户安全防护等提供了强有力的支持。 数据整合构建风险画像数据 IP 地址、银行卡、手机号、身份证归属地等数据来源各异,信息属…...

堆复习(C语言版)
目录 1.树的相关概念: 2.堆的实现 3.TopK问题 4.总结 1.树的相关概念: 1.结点的度:一个结点含有的子树(孩子)个数。 A的度为6 2.叶结点or终端结点:度为0的结点。 J、K、L、H、I 都是叶子结点 3.非终端结…...

Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验
Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验 前言 在人工智能飞速发展的当下,AI 推理的效率和性能成为开发者关注的焦点。Groq 作为一款基于 LPU™ 的超快速 AI 推理引擎,凭借其强大的性能,能够支持各类 AI 模型&…...

Megatron系列——张量并行
本文整理自bilibili Zomi视频 1、行切分和列切分 注意: (1)A按列切分时,X无需切分,split复制广播到A1和A2对应设备即可。最后Y1和Y2需要拼接下,即All Gather (2)A按行切分时&#…...

学习笔记:黑马程序员JavaWeb开发教程(2025.4.3)
12.1 基础登录功能 EmpService中的login方法,是根据接收到的用户名和密码,查询时emp数据库中的员工信息,会返回一个员工对象。使用了三元运算符来写返回 Login是登录,是一个业务方法,mapper接口是持久层,是…...
DeepSeek的100个应用场景
在春节前夕,浙江杭州的AI企业DeepSeek推出了其开源模型DeepSeek-R1,以仅相当于Open AI最新模型1/30的训练成本,在数学、编程等关键领域展现出媲美GPT-o1的出色性能。发布仅数日,DeepSeek-R1便迅速攀升至中美两国苹果应用商店免费榜…...

[Windows] Honeyview V5.53
[Windows] Honeyview 链接:https://pan.xunlei.com/s/VOQ3BzcINSmMb1YsHO_Pp2tqA1?pwdujkm# Honeyview是一款兼快速与强大于一体的免费图像查看器, 本版本为该软件的最后一个版本,将不再有新的更新。 主要功能 轻量且快速可以显示包括…...
VUE3基础样式调整学习经验
首先创建一个vue项目最好要把不属于自己的样式都删除掉,以面出现css难以调整的情况: 1.assets目录下的main.css、base.css等样式全部删除 2.app.vue下的样式也全部删除 3.使用element plus一定要加入样式包: import element-plus/dist/in…...

Altera系列FPGA实现图像视频采集转HDMI/LCD输出,提供4套Quartus工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目Altera系列FPGA相关方案推荐 3、设计思路框架工程设计原理框图输入Sensor之-->OV7725摄像头输入Sensor之-->OV5640摄像头输入Sensor之-->串口传图输入图像缓…...
互联网大厂Java面试实战:Spring Boot到微服务的技术问答解析
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

Leetcode-BFS问题
LeetCode-BFS问题 1.Floodfill问题 1.图像渲染问题 [https://leetcode.cn/problems/flood-fill/description/](https://leetcode.cn/problems/flood-fill/description/) class Solution {public int[][] floodFill(int[][] image, int sr, int sc, int color) {//可以借助另一…...
Web端项目系统访问页面很慢,后台数据返回很快,网络也没问题,是什么导致的呢?
Web端访问缓慢问题诊断指南(测试工程师专项版) ——从浏览器渲染到网络层的全链路排查方案 一、问题定位黄金法则(前端性能四象限) 1. [网络层] 数据返回快 ≠ 资源加载快(检查Content Download时间) 2. [渲染层] DOM复杂度与浏览器重绘(查看FPS指标) 3. [执行层…...
Next.js 知识框架总结
一、核心概念 1. 渲染策略 CSR (Client-Side Rendering): 传统 React 渲染方式 SSR (Server-Side Rendering): 服务端渲染 getServerSideProps SSG (Static Site Generation): 静态生成 getStaticProps getStaticPaths (动态路由) ISR (Incremental Static Regeneration…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.4 数据故事化呈现:从报告结构到业务价值的深度融合一、数据故事化的核心价值体系(一)报告结构设计的黄金框架1. 业务场景锚定ÿ…...

专题二:二叉树的深度搜索(二叉树剪枝)
以leetcode814题为例 题目分析: 也就是当你的子树全为0的时候就可以剪掉 算法原理分析: 首先分析问题,你子树全为0的时候才可以干掉,我们可以设递归到某一层的时候如何处理 然后抽象出三个核心问题 也就是假设我们递归到第2层…...

Hugging Face推出了一款免费AI代理工具,它能像人类一样使用电脑
Hugging Face推出了一款免费AI代理工具,它能像人类一样使用电脑。 这款工具名为Open Computer Agent(开放计算机代理),可模拟真实的电脑操作。 无需安装,在浏览器中即可运行。 以下是一些信息: - Open C…...
Datawhale AI春训营 day
待补充 2025星火杯应用赛入门应用 创空间 魔搭社区 {"default": {"system": "你是星火大模型,一个由科大讯飞研发的人工智能助手。请用简洁、专业、友好的方式回答问题。","description": "默认系统提示词"}…...
Java面试高阶篇:Spring Boot+Quarkus+Redis高并发架构设计与性能优化实战
Java面试高阶篇:Spring BootQuarkusRedis高并发架构设计与性能优化实战 面试官(严肃): Q1: 你项目中如何实现高并发下的缓存优化? 候选人(水货): 我们用了Redis做缓存,…...