测开学习DAY26

黑马程序员网课学习(Python)

一、unittest框架组成(续)

1. TestLoader (测试加载)
(1)作用

和 TestSuite 的作用是一样的, 对 TestSuite 功能的补充, 用来组装测试用例

(2)步骤
  • 导包
  • 实例化测试加载对象并添加用例 ---> 得到的是 suite 对象
  • 实例化 运行对象
  • 运行对象执行套件对象
(3)代码实现

在一个项目中 TestCase(测试用例) 的代码,一般放在一个单独的目录 (case)

2. Fixture(测试夹具)

Fixture(测试夹具) 是一种代码结构,在某些特定的情况下会自动执行

方法级别和类级别的前后的方法,不需要同时出现,根据用例代码的需要自行的选择使用

(1)方法级别[掌握]

在每个测试方法(用例代码) 执行前后都会自动调用的结构

(2)类级别[掌握]

在每个测试类中所有方法执行前后,都会自动调用的结构(在整个类中执行之前执行之后各一次)

(3)模块级别[了解]

模块: 代码文件

在每个代码文件执行前后执行的代码结构

(4)案例

二、断言

让程序代替人工自动的判断预期结果和实际结果是否相符

断言的结果有两种:

  • True, 用例通过
  • False, 代码抛出异常, 用例不通过

在 unittest 中使用断言, 都需要通过 self.断言方法 来试验

1. assertEqual

self.assertEqual(预期结果, 实际结果) # 判断预期结果和实际结果是否相等

  • 如果相等, 用例通过
  • 如果不相等,用例不通过, 抛出异常
2. assertIn

self.assertIn(预期结果, 实际结果) # 判断预期结果是否包含在实际结果中

  • 包含 ,用例通过
  • 不包含, 用例不通过, 抛出异常
3. 案例

三、参数化

参数化:在测试方法中, 使用变量来代替具体的测试数据, 然后使用传参的方法将测试数据传递给方法的变量

好处: 相似的代码不需要多次书写.

工作中场景:

  • 测试数据一般放在 json 文件中
  • 使用代码读取 json 文件,提取我们想要的数据 ---> [(), ()] or [[], []]
1. 安装插件

unittest 框架本身是不支持参数化, 想要使用参数化,需要安装插件来完成

验证:

2. 参数化代码
  • 导包 unittest/ pa
  • 定义测试类
  • 书写测试方法(用到的测试数据使用变量代替)
  • 组织测试数据并传参

四、跳过

对于一些未完成的或者不满足测试条件的测试函数和测试类, 不想执行,可以使用跳过

使用方法:装饰器完成,代码书写在 TestCase 文件

五、测试报告

1. 自带的测试报告
2. 生成第三方的测试报告

(1)获取第三方的测试运行类模块 , 将其放在代码的目录中

(2)导包 unittest

(3)使用套件对象, 加载对象去添加用例方法

(4)实例化第三方的运行对象 并运行套件对象

3. 测试报告(中文)
4. 流程总结

(1)组织用例文件(TestCase 里边), 书写参数化, 书写断言, 书写 Fixture, 书写 跳过, 如果单个测试测试文件, 直接运行, 得到测试报告, 如果有多个测试文件, 需要组装运行生成测试报告

(2)使用 套件对象组装, 或者使用 加载对象组装

(3)运行对象运行

① 运行对象 = 第三方的运行类(文件对象(打开文件需要使用 wb 方式))

② 运行对象.run(套件对象)

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习