UnitTest框架的使用

文章目录

一、UnitTest框架是什么?

UnitTest框架是python自带的一个单元测试框架,主要用它来做单元测试,它有以下特点:

  • 能够组织多个用例去执行
  • 提供丰富的断言方法
  • 能够生成测试报告

二、UnitTest核心要素

1.TestCase(最核心模块)

TestCase(测试用例),注意我们这个测试用例是unittest框架的组成部分,不是手工和自动化中我们所说的用例(Test Case)

主要作用:每个TestCase都是一个代码文件,在这里代码文件中来书写真正的用例代码

2.TestSuite

TestSuite(测试套件),用来管理组装多个TestCase的

3.TestRunner

TestRunner(测试执行,测试运行),用来执行TestSuite(测试套件)的

4.TestLoader

TestLoader(测试加载),功能是对TestSuite(测试套件)功能的补充,用来管理 组装多个TestCase的

5.Fixture

Fixture(测试夹具),书写在TestCase(测试用例)代码中,是一个代码结构,可以在每个方法前后都会执行的内容

三、TestCase

TestCase是一个代码文件,在代码文件中书写真正的用例代码,代码文件的名字必须按照标识符的规则来书写(可以将代码的作用在文件的开头使用注解说明)

使用步骤:

  1. 导包(unittest)
  2. 自定义测试类
  3. 在测试类中书写测试方法
  4. 执行用例
python 复制代码
"""
    代码目的: 学习TestCase(测试用例)模块的书写方法
"""

# 1. 导包
import unittest

# 2. 自定义测试类,需要继承unittest模块中的TestCase类即可
class TestDemo(unittest.TestCase):
    # 3. 书写测试方法, 也就是真正的测试代码
    # 书写要求,测试方法必须以test_开头(本质是以test开头)
    def test_method1(self):
        print('TestCase1')
    def test_method2(self):
        print('TestCase2')
# 4. 执行测试用例

在执行测试用例方法时,我们有以下两种方式:

  1. 将光标放在类名的后边运行,会执行类中的所有测试方法
  1. 将光标放在方法名的后边运行,只执行当前的方法

常见问题

1.代码文件命名不规范

1.代码文件的名字以数字开头

2.代码文件名字中有空格

3.代码文件名字中有中文

4.其他的特殊符号

(数字,字母,下划线组成,不能以数字开头)

2.代码运行没有结果

右键运行没有unittests for的提示,出现的问题

解决方案:

  1. 重新建一个代码文件,将写好的代码复制进去
  2. 删除已有的运行方式


    这样默认就是用的unittest方式运行

3.没有找到用例

测试方法不是以test开头的,或者单词写错了

四、TestSuite & TestRunner

TestSuite(测试套件):管理 打包 组装TestCase(测试用例)文件的

TestRunner(测试执行):执行TestSuite(套件)

步骤:

  1. 导包(unittest)
  2. 实例化(创建对象)套件对象
  3. 使用套件化对象添加用例方法
    4.实例化运行对象
    使用运行对象执行套件对象

具体代码:

TestSuite(测试套件):是用来管理多个TestCase的,我们需要先创建多个TestCase文件

python 复制代码
"""
    学习 TestSuite 和 TestRunner使用
"""

# 1. 导包
import unittest

from test.testcase_1 import TestDemo1
from test.testcase_2 import TestDemo2

# 2. 实例化套件对象
suite = unittest.TestSuite()

# 3. 使用套件对象添加用例方法
     # 方式一: 套件对象.addTest(测试类名('方法名')) 建议直接复制
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method1'))

# 4. 实例化运行对象
runner = unittest.TextTestRunner()

# 5. 使用运行对象去执行套件
runner.run(suite)

使用测试套件对象添加测试用例方法的第二种方法:

python 复制代码
    # 方式二: 将一个测试类的所有方法进行添加
    # 套件对象.addTest(unitest.makeSuite(测试类名))
    # 缺点: makeSuite() 这个方法官方是不太建议用的
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))

给出了下述的提示信息:DeprecationWarning: unittest.makeSuite() is deprecated and will be removed in Python 3.13. Please use unittest.TestLoader.loadTestsFromTestCase() instead.

suite.addTest(unittest.makeSuite(TestDemo1))。但是可以正确输出结果的

我们在运行完后,上面的符号是有一定的含义的:

. 代表用例通过,F 代表用例不通过,E error 用例代码有问题

注意点:

1.unittest.TestSuite()和unittest.TextTestRunner()是方法,需要加括号的

2.运行时对象是.TextTestRunner()不是.TestRunner()

相关推荐
喵手5 分钟前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆11 分钟前
YOLOP车道检测
人工智能·python·算法
nimadan1212 分钟前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python
默默前行的虫虫17 分钟前
MQTT.fx实际操作
python
YMWM_26 分钟前
python3继承使用
开发语言·python
JMchen12327 分钟前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
亓才孓1 小时前
[Class类的应用]反射的理解
开发语言·python
小镇敲码人1 小时前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann
摘星编程1 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
魔芋红茶2 小时前
Python 项目版本控制
开发语言·python