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

【python】unittest单元测试

文章目录

  • 基本使用
  • 不同启动方式的区别

基本使用

下面是根据文档写的一个demo,主要的内容基本都包含了,使用时导入自己的业务类测试类中的方法就行。

import unittest


# 测试类不强制test开头,仅作为规范。但必须继承unittest.TestCase
class TestClass(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('测试类开始之前(所有测试方法执行之前)执行,相关初始化操作')

    @classmethod
    def tearDownClass(cls):
        print('测试类结束之前(所有测试方法执行之后)执行,相关清理操作')

    def setUp(self):
        print('每个测试方法执行前执行')

    def tearDown(self):
        print('每个测试方法执行后执行')

    # 测试方法必须以test开头,testFun、test_fun都可
    def test_fun1(self):
        self.assertEqual(1 + 1, 2)

        # 校验with内部代码是否抛出预期异常 出现异常测试通过 反之不通过
        with self.assertRaises(ZeroDivisionError):
            self.assertEqual(1 / 0, 1)

    @unittest.skip  # 跳过下面这个测试
    def test_fun2(self):
        self.assertTrue(1)


if __name__ == '__main__':
    unittest.main()

setUpClass、tearDownClass、setUp、tearDown都可以省略。其他的一些校验类型参考下图:
在这里插入图片描述

不同启动方式的区别

测试的两种启动执行方式:
1)脚本中unittest.main()启动执行

实际测试中(pycharm环境),如果一个脚本中有多个测试类、一个测试类中有多个测试方法的话,这种启动方式每次执行的命令后面的参数都可能会变化:

  • 可能会只是一个模块名,这时候会执行模块中所有测试类的全部方法
  • 也可能会是模块名.类名,只测试该类中的所有测试方法
  • 也有可能会是模块名.类名.方法名的组合,只测试单独的一个方法

所以这种方式启动的话,建议脚本中只写一个测试类,且类中只有一个测试方法,所有的测试逻辑都放在该方法里。

在这里插入图片描述

2)命令行启动执行

这种方式可以直接指定模块、具体的测试类及测试方法等。

如果指定模块,会测试模块中所有测试类的全部方法。(命令执行目录下需要能搜索到指定模块,注意模块名不包含.py)

在这里插入图片描述

更多细节参考API:
https://docs.python.org/3/library/unittest.html(en)
https://docs.python.org/zh-cn/3/library/unittest.html(cn)


http://www.kler.cn/a/463833.html

相关文章:

  • Django 中数据库迁移命令
  • pandas-栗子
  • PTA数据结构作业一
  • 25.1.3
  • AngularJS 过滤器:提升用户体验的数据处理利器
  • Ubuntu Server安装谷歌浏览器
  • 家教系统|Java|SSM|VUE| 前后端分离
  • Ethernet 系列(13)-- 基础学习::VLAN
  • 019-spring-基于aop的事务控制原理
  • 【网络安全实验室】脚本关实战详情
  • 使用 MySQL 实现数据交互:从数据存储到查询优化
  • SAP学习笔记 - 豆知识14 - Msg 番号 M7562 - 取引Type WL 对应的番号範囲中不存在2025年度 OMBT
  • CSS 之 position 定位属性详解
  • 【JVM】总结篇-字节码篇
  • 诗韵--代码之外的生活:2025 元旦歌
  • Tailwind CSS 实战:社交媒体信息流开发
  • 【从零开始】11. LLaMA-Factory 微调 Qwen 模型(番外篇)
  • JVM:记录一次因为查询量过大导致的OOM问题(四)
  • 深入理解 ElasticSearch 索引与检索原理
  • Vue Prop 默认值深入解析:工厂函数与 rawProps 的正确使用
  • 多点通信、流式域套接字
  • leetcode hot 100 跳跃游戏2
  • MySQL管理
  • phpstudy2018问题(技巧)总结
  • web3基于OP_Rollup的L2扩容方案-Arbitrum
  • OpenSSL 常见用法与命令输出解析