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()

相关推荐
xiaohanbao0916 分钟前
Transformer架构与NLP词表示演进
python·深度学习·神经网络
love530love1 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
程序员晚枫1 小时前
Python 3.14正式发布!这5大新特性太炸裂了
python
先做个垃圾出来………1 小时前
SortedList
python
这里有鱼汤1 小时前
从DeepSeek到Kronos,3个原因告诉你:Kronos如何颠覆传统量化预测
后端·python·aigc
晓宜2 小时前
Java25 新特性介绍
java·python·算法
深栈2 小时前
机器学习:决策树
人工智能·python·决策树·机器学习·sklearn
MediaTea2 小时前
Python:匿名函数 lambda
开发语言·python
hui函数2 小时前
Python全栈(基础篇)——Day07:后端内容(函数的参数+递归函数+实战演示+每日一题)
后端·python
MYX_3093 小时前
第二章 预备知识(线性代数)
python·线性代数·机器学习