【Python系列】Python单元测试 - setUp 和 tearDown

根据 ‘C语言中文网’ 该链接下的文章学习整理,点击此处即可访问。本文对此进行了提炼精简并做了适当的修改,如有侵权请私信我删除。


unittest相关概念梳理:

  • 测试用例类(TestCase的子类):测试用例类就是单个的单元测试,其负责检查特定输入和对应的输出是否匹配。unittest 提供了一个 TestCase 基类用于创建测试用例类。
  • 测试包(TestSuite):用于组合多个测试用例,测试包可以嵌套测试包。
  • 测试运行器(TestRuner):负责组织、运行测试用例,并向用户呈现测试结果。
  • 测试固件(TestFixture):代表执行一个或多个测试用例所需的准备工作,以及相关联的准备操作,准备工作可能包括创建临时数据库、创建目录、开启服务器进程等。

unittest.TestCase 包含了 setUp() 和 tearDown() 两个方法,其中 setUp() 方法用于初始化测试固件;而tearDown() 方法用于销毁测试固件。程序会在运行测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,并在每个测试用例运行完成之后自动执行 tearDown() 方法来销毁测试固件。

测试程序 test_fixture.py:

import unittest

from hello import *

class TestHello(unittest.TestCase):
    # 测试 say_hello() 函数
    def test_say_hello(self):
        self.assertEqual(say_hello(), 'Hello Python')

    # 测试 add() 函数
    def test_add(self):
        self.assertEqual(add(3, 4), 7)
        self.assertEqual(add(0, 4), 4)
        self.assertEqual(add(-3, 0), -3)

    @classmethod
    def setUpClass(cls) -> None:
        print('\n=====执行 setUp 模拟初始固件 =====')

    @classmethod
    def tearDownClass(cls) -> None:
        print('\n=====执行 setUp 模拟模拟固件 =====')

如果用下面的代码的话会导致每一次执行每一个测试用例的时候都会执行测试固件部分的代码,降低代码的执行效率;
因此就使用上面代码的方法重写测试固件方法,重新后的方法会在该类的所有测试用例执行之前和执行之后执行,提高运行效率。

def setUp(self):        
	print('\n====执行setUp模拟初始化固件====')    
def tearDown(self):        
	print('\n====调用tearDown模拟销毁固件====')	

运行测试程序:
参数 -v:用于告诉 unittest 生成更详细的输出信息

python -m unittest -v test_fixture.py

测试固件运行结果

猜你喜欢

转载自blog.csdn.net/kelisigk/article/details/89853442
今日推荐