从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()
运行测试时,输出将是
^{pr2}$然而,在我的实际用例中,子测试将依赖于更复杂的iterable,并检查每个子测试都非常不同的内容。因此,我宁愿将每个子测试计数并作为一个单独的测试用例列在输出中(在本例中是Ran 6 tests in ...
),以获得完整的结果。在
在Python中的普通unittest
模块中,这是否可能?The nose test generator feature将分别输出每个测试,但如果可能,我希望与标准库保持兼容。在
在使用Python3.5.2时,themiurge的answer对我来说不是开箱即用的,但稍加调整就可以实现我想要的功能。在
我必须特别让测试运行人员使用这个新类,如下所示:
然而,这并不像默认情况下那样将测试失败的详细信息打印到控制台。为了恢复这种行为,我不得不将继承自的类
^{pr2}$NumbersTestResult
更改为unittest.TextTestResult
。在您可以子类
unittest.TestResult
:然后在
^{pr2}$NumbersTest
中重写run
函数:很抱歉,我现在无法在完全工作的环境中测试此功能,但这应该能解决问题。在
相关问题 更多 >
编程相关推荐