单一测试方法收集其他测试方法的结果(单元测试包)

时间:2020-06-16 09:19:29

标签: python-3.x testing

我正在为算法编写一些测试,其中测试集上的执行非常昂贵。为此,我基本上写了以下内容:

class MyAlgoTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.results = {expensive_computation(x) for x in something}
    def assertResultFound(self, single_result):
        if single_result in self.results:
            self.results.remove(single_result)
        else:
            raise self.failureException("a meaningful message")

这样,我可以通过以下方式使用测试

class SpecificTestCase(MyAlgoTestCase)
    def test_result_found1(self):
        self.assertResultFound('foo')
        self.assertResultFound('bar')
    def test_result_found2(self):
        self.assertResultFound('baz')

一切都像魅力。但这是一个问题:

最后,我要测试结果集是否为空(我的算法找到了它打算查找的所有内容)。

我已经尝试了以下方法:

  • 在tearDownClass期间执行测试。缺点:运行python -m unittest ...时,tearDownClass用作测试,这对我来说很丑。
  • 将各自的测试写为MyAlgoTest的方法。这样,我不能保证此测试能够最后运行。因此,某些元素保留在结果集中,随后将其删除。因此,测试错误地失败了。

请不要回答诸如“这些不是单元测试-使用不同的东西”(我在这里看到了很多这样的答案)。在整个DevOps环境中,该框架都是相同的。

0 个答案:

没有答案