为什么通过defaultTestLoader.loadTestsFromModule加载测试套件时,setUpClass函数未被调用?

0 投票
2 回答
889 浏览
提问于 2025-04-17 10:25

背景: python 2.6.5 环境

我正在使用 unittest.defaultTestLoader.loadTestsFromModule(module) 来加载测试。

但是,当加载以下内容时,setUpClass 方法没有被执行。

class MyTest(unittest.TestCase):
    foo = None

    def test_choice(self):
        self.logger.info('   .. %s' % str(Full.foo))
        self.assertTrue(1 == 1)

    @classmethod
    def setUpClass(cls):
        logging.warn('setUpClass')
        cls.foo = settings.INITIAL

返回的测试套件显示它返回了:

<unittest.TestSuite 
    tests=[<unittest.TestSuite 
         tests=[<internal.tests.master.MyTest testMethod=test_choice>]>,

基本上,在 'test' 包下面,会有很多测试模块。我希望 setUpClasstearDownClass 能在每个测试套件中都能正常工作。可是 loadTestsFromModule 并不能满足我的需求。有其他方法可以实现这个吗?

2 个回答

1

TestLoader.loadTestsFromModule 这个方法主要是用来加载你模块里的测试用例到一个测试套件中。如果你想要执行 setUpClass & tearDownClass,那么你需要运行你的测试套件。

2

我升级到unittest2之后,现在可以正常工作了。

撰写回答