当前位置: 首页 > news >正文

UnitTest框架

文章目录

  • 定义
  • 作用
  • 核心要素
    • TestCase
    • TestSuite
    • TestRunner
    • TestLoader
    • Fixture
  • 不同IDE运行
    • Pycharm运行
    • VSCode运行

定义

框架framework,是用于解决某一类事情的功能集合,使用时需要按照框架规定去书写代码。

UnitTest框架,是python自带的单元测试框架,无需安装,可用于单元测试,第三方框架则需先安装后使用。

开发人员使用UnitTest进行单元测试,测试人员使用UnitTest来管理运行多个测试用例。

作用

1、自动化执行用例
2、提供丰富的断言方法,让程序代替人工判断结果是否符合预期
3、生成测试报告

核心要素

TestCase

测试用例,是UnitTest框架的组成部分,而非测试时使用的用例,是框架中最核心的模块。一个TestCase即一个代码文件,需按照标识符规则命名,可在开头说明用例测试目的。

# 1、导包
import unittest
# 2、自定义测试类,继承TestCase类
class TestDemo(unittest.TestCase):# 3、写测试方法即用例代码,需要test开头# 因为unittest.main()的testMethodPrefix的值为'test'
# 4、执行用例
# a.光标定位到类名后执行,执行类中所有方法
# b.光标定位到方法名后执行,执行当前方法

如何用例执行失败,按照以下排查:
1、文件命名是否规范
2、测试方法命名是否规范
3、代码执行无结果可能是此前作为python文件运行过,可重建文件或删除运行方式

TestSuite

测试套件,管理、打包、组装多个测试用例

TestRunner

测试运行,运行测试套件

# 1、导包
import unittest
# 2、实例化套件对象
suite=unittest.TestSuite()
# 3、使用套件对象添加用例方法
# a.套件对象.addTest(测试类名('方法名')),一次只能添加一个方法
suite.addTest(TestDemo1('method1'))
suite.addTest(TestDemo1('method2'))
suite.addTest(TestDemo2('method1'))
suite.addTest(TestDemo2('method2'))
# b.套件对象.addTest(unittest.makeSuite(测试类名)),添加测试类的所有方法
# 需要导入TestDemo from ... import TestDemo
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))
# 4、实例化运行对象
runner=unittest.TextTestRunner()
# 5、使用运行对象执行套件对象,运行对象.run(套件对象)
runner.run(suite)

TestLoader

测试加载,对测试套件功能的补充

Fixture

测试夹具,写在测试用例中的代码结构,每个方法执行前后都会执行的内容

不同IDE运行

Pycharm运行

(尚未实践)
运行结果中 .表示用例通过,F表示用例不通过,E表示用例代码有问题

VSCode运行

需要配置unittest,ctrl+shift+P,搜索Python:Configure tests —— unittest —— 包含测试用例的路径 —— 命名方式。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击左侧绿色图标运行单个方法,或者光标定位到类,右键运行所有方法
在这里插入图片描述

http://www.xdnf.cn/news/78805.html

相关文章:

  • c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第七式】程序的编译
  • ARM Cortex-M (STM32)如何调试HardFault
  • vite详细打包配置,包含性能优化、资源处理...
  • 突破AI检测边界:对抗技术与学术伦理的终极博弈
  • 【HarmonyOS】ArKUI框架
  • 诠视科技MR眼镜如何使用头瞄点和UGUI交互
  • Filename too long 错误
  • XML内容解析成实体类
  • Java 中 XML 处理工具类详解
  • WHAT - 静态资源缓存穿透
  • 【音视频】音频解码实战
  • Ubuntu-Linux中vi / vim编辑文件,保存并退出
  • Cline Roo Code
  • 广告效果分析-广告点击率mysql+pandas
  • C++ linux打包运行方案(cmake)
  • vue浅试(1)
  • audio 核心服务AudioPolicyService 和AudioFlinger启动流程
  • 野外价值观:在真实世界的语言模型互动中发现并分析价值观
  • 测试电源在光伏测试中的应用
  • http通信之axios vs fecth该如何选择?
  • PyTorch DDP 跨节点通信的底层机制
  • “融合Python与机器学习的多光谱遥感技术:数据处理、智能分类及跨领域应用”​
  • LDO手册看点
  • Android调用springboot接口上传大字段,偶现接口超时的优化
  • Java容灾架构设计
  • [目标检测] Yolov5模型
  • 开启报名!火山引擎 x PICO-全国大学生物联网设计竞赛赛题发布
  • PDF转换Word深度评测 - ComPDFKit Conversion SDK V3.0
  • DOCA介绍
  • Power BI企业运营分析——数据大屏搭建思路