如何从python unittest捕获输出

时间:2014-02-04 16:55:41

标签: python

我有一个python功能测试,我从另一个函数运行:

unittest.main(module=ft1.y1, argv=sys.argv[:1], exit=False)

我想将输出捕获到变量中。

我试过

out = unittest.main(module=ft1.y1, argv=sys.argv[:1], exit=False)
print 'out ' + str(out)

这导致

的响应
out

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要将sys.stdout重定向到字符串缓冲区。

有两种方法可以查看此问题的答案:Can I redirect the stdout in python into some sort of string buffer?

答案 1 :(得分:1)

为什么要从其他功能运行单元测试? 为什么你不使用标准跑步者?例如

  class MyTestCase(unittest.TestCase):
      ...
      # tests

  suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)

  unittest.TextTestRunner(verbosity=2).run(suite)

P.S。我把这篇文章写成了答案,因为我没有足够的分数把它写成评论。