如果我用 Python 编写单元测试(使用 unittest 模块),是否可以输出失败测试的数据,以便我可以检查它以帮助推断导致错误的原因?
我知道创建自定义消息的能力,它可以携带一些信息,但有时您可能会处理更复杂的数据,这些数据无法轻松表示为字符串。
例如,假设您有一个 Foo 类,并且正在使用名为 testdata 的列表中的数据来测试方法 bar:
class TestBar(unittest.TestCase):
def runTest(self):
for t1, t2 in testdata:
f = Foo(t1)
self.assertEqual(f.bar(t2), 2)
如果测试失败,我可能想输出 t1、t2 和/或 f,以了解为什么此特定数据导致失败。通过输出,我的意思是在运行测试后可以像任何其他变量一样访问变量。
我们为此使用日志记录模块。
例如:
import logging
class SomeTest( unittest.TestCase ):
def testSomething( self ):
log= logging.getLogger( "SomeTest.testSomething" )
log.debug( "this= %r", self.this )
log.debug( "that= %r", self.that )
self.assertEqual( 3.14, pi )
if __name__ == "__main__":
logging.basicConfig( stream=sys.stderr )
logging.getLogger( "SomeTest.testSomething" ).setLevel( logging.DEBUG )
unittest.main()
这使我们能够针对已知失败且需要额外调试信息的特定测试打开调试。
然而,我首选的方法不是花费大量时间进行调试,而是编写更细粒度的测试来暴露问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)