python - setUpClass 失败时如何清理 Python 单元测试?

标签 python unit-testing python-unittest

假设我有以下 Python 单元测试:

import unittest

def Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # Get some resources
        ...

        if error_occurred:
            assert(False)

    @classmethod
    def tearDownClass(cls):
        # release resources
        ...

如果 setUpClass 调用失败,则不会调用 tearDownClass,因此永远不会释放资源。如果下一次测试需要资源,那么在测试运行期间就会出现问题。

有没有办法在 setUpClass 调用失败时进行清理?

最佳答案

可以在setUpClass方法中放一个try catch,在except中直接调用tearDown。

def setUpClass(cls):
     try: 
         # setUpClassInner()
     except Exception, e:
        cls.tearDownClass()
        raise # to still mark the test as failed.

需要外部资源来运行单元测试是不好的做法。如果这些资源不可用,并且您需要测试部分代码是否存在奇怪的错误,您将无法快速运行它。尝试区分集成测试和单元测试。

关于python - setUpClass 失败时如何清理 Python 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538198/

相关文章:

python - 将 beautifulsoup 输出转换为矩阵

python 递归函数中的生成器

java - 'Merge Sort on doubly linked list' 的单元测试

python - 列表项的assertEqual自定义比较

python - 使用 mock_open 修补函数哪里出错了?

python - 可扩展散列 - 最高有效位

python - 在每行的开头插入字符串

javascript - Jest 测试 .toBeInstanceOf(Error) 失败

sql-server - Powershell SMO Restore脚本的单元测试

python - 对象内部的模拟模块调用