python中如何从单元测试输出数据?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (79)

如果我用python编写单元测试(使用unittest模块),那么是否有可能从失败的测试中输出数据,这样我就可以检查它以帮助推断是什么导致了错误?

例如,假设您有一个类foo,并且使用一个名为testdata的列表中的数据测试一个方法栏:

class TestBar(unittest.TestCase):
    def runTest(self):
        for t1, t2 in testdata:
            f = Foo(t1)
            self.assertEqual(f.bar(t2), 2)

如果测试失败,我可能希望输出T1、T2和/或f,以了解为什么这些特定数据导致失败。

提问于
用户回答回答于

在Python2.7中,您可以使用一个额外的参数。如下所示:

self.assertEqual(f.bar(t2), 2, msg='{0}, {1}'.format(t1, t2))

参考官方文档:这里

用户回答回答于

为此,我们使用logging模块。

例如:

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 )
        # etc.
        self.assertEquals( 3.14, pi )

if __name__ == "__main__":
    logging.basicConfig( stream=sys.stderr )
    logging.getLogger( "SomeTest.testSomething" ).setLevel( logging.DEBUG )
    unittest.main()

扫码关注云+社区

领取腾讯云代金券