计算Python单元测试中的子测试
发布时间:2020-12-20 13:18:35 所属栏目:Python 来源:网络整理
导读:从3.4版开始,Python supports a simple subtest syntax when writing unittests.一个简单的例子可能如下所示: import unittestclass NumbersTest(unittest.TestCase): def test_successful(self): """A test with subtests that will all succeed.""" for i
从3.4版开始,Python
supports a simple subtest syntax when writing unittests.一个简单的例子可能如下所示:
import unittest class NumbersTest(unittest.TestCase): def test_successful(self): """A test with subtests that will all succeed.""" for i in range(0,6): with self.subTest(i=i): self.assertEqual(i,i) if __name__ == '__main__': unittest.main() 运行测试时,输出将是 python3 test_foo.py --verbose test_successful (__main__.NumbersTest) A test with subtests that will all succeed. ... ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK 但是,在我的实际用例中,子测试将依赖于更复杂的迭代,并检查每个子测试的非常不同的东西.因此,我宁愿让每个子测试计数并在输出中列出一个单独的测试用例(在本例中为Ran 6测试)以获得完整的图像. 这在Python中使用plain unittest模块是否可行? The nose test generator feature将单独输出每个测试,但如果可能的话,我希望与标准库保持兼容. 解决方法
你可以继承unittest.TestResult:
class NumbersTestResult(unittest.TestResult): def addSubTest(self,test,subtest,outcome): # handle failures calling base class super(NumbersTestResult,self).addSubTest(test,outcome) # add to total number of tests run self.testsRun += 1 然后在NumbersTest中覆盖run函数: def run(self,test_result=None): return super(NumbersTest,self).run(NumbersTestResult()) 对不起,我现在无法在完全正常工作的环境中对此进行测试,但这应该可以解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |