Python Unit Test中的测试顺序的控制

本文介绍了如何在Python的Unittest中控制测试方法的执行顺序,以及处理测试类中的共享数据和操作。通过setUpClass、tearDownClass、setUp和tearDown方法可以管理共享资源,并按照ASCII码顺序命名测试方法来定制执行顺序。此外,还提到了setUpModule和tearDownModule在测试模块级别的执行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python中unit test的基本写法已经在上一篇文章中说明:

Python中的Unittest基本用法_哲思天下的博客-优快云博客

但我们在写测试case时候,还可能需要下面问题:

1. 在一个测试类中包含很多测试方法,这些测试方法有共同的操作。例如:

test_case1和test_case2执行前都需要用到同一个实例A和同一个测试file

2. 测试类中的测试方法之间有依赖关系,例如:

必须先执行test_case1,再执行test_case2

这个时候,我们就需要控制测试方法的执行顺序,那怎么做呢?

针对不同的测试方法有共用的数据和操作,如果这些数据和操作对所有case只需要执行一次,那么就可以用setUpClass和tearDownClass对进行控制;如果这些数据和操作对每一个case都需要执行一次,那么可以用setUp和tearDown对来实现。不同的是setUpClass和tearDownClass属于类方法,必须用@classmethod进行修饰。

针对测试方法的顺序,Unit Test默认是按照test_后面ASCII码的顺序执行,所以我们想要认为控制测试顺序的时候,可以按照这一规则进行命名,例如 test_1_case, test_2_case, test_3_case...等等,假设某一天我们需要针对test_2_case增加一个case,我们可以命名为test_2_case_1。

另外还有一对setUpModule和tearDownModule,这对函数是每个测试模块(一个 py 文件为一个模块)加载/结束时执行一次,因为一个py文件中可能有多个测试类。

举例如下:

import unittest

def setUpModule(self):
    print("setUpModule is running")

def tearDownModule(self):
    print("tearDownModule is running")
    
class TestMyFunc1(unittest.TestCase):
    @classme
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值