如何测试打印报表?

时间:2012-06-20 15:10:57

标签: python unit-testing stdout

你想写unittest - 像这样的函数的案例:

def test_me(a):
    for b in c:
        print do_something(a,b)

首先,我想到只是在字符串中收集do_something的输出然后返回它,一起打印和测试整个输出。但它并不总是很方便,因为这样的循环可能会导致缓冲区字符串变得非常大,具体取决于具体情况。那么,在打印并且不返回输出时,您可以做些什么来测试输出?

2 个答案:

答案 0 :(得分:12)

print会打印到sys.stdout,如果您愿意,可以将其重新分配给您自己的对象。你的对象唯一需要的是一个write函数,它接受一个字符串参数。

从Python 2.6开始,您也可以通过在脚本顶部添加print来将from __future__ import print_function更改为函数而不是语言构造。这样您就可以使用自己的函数覆盖print

答案 1 :(得分:2)

在Python 3中,它在内置@Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { data[rowIndex][columnIndex] = aValue; } 函数上易于使用unittest.mock

print