使用capfd夹具。
示例:def test_foo(capfd):
foo() # Writes "Hello World!" to stdout
out, err = capfd.readouterr()
assert out == "Hello World!"
有关内置设备的列表,请参见:py.test --fixtures。
你的例子有一些问题。以下是更正版本:def f(name):
print "hello {}".format(name)
def test_f(capfd):
f("Tom")
out, err = capfd.readouterr()
assert out == "hello Tom\n"
注意:不要使用sys.stdout——使用pytest提供的capfd夹具。
使用py.test foo.py运行测试
测试运行输出:$ py.test foo.py
====================================================================== test session starts ======================================================================
platform linux2 -- Python 2.7.5 -- pytest-2.4.2
plugins: flakes, cache, pep8, cov
collected 1 items
foo.py .
=================================================================== 1 passed in 0.01 seconds ====================================================================
另请注意:您不需要在测试模块中运行测试函数。py.test(CLI工具和Test Runner)为您执行此操作。
py.test主要做三件事:收集您的测试
运行测试
显示统计信息和可能的错误
默认情况下,py.test在测试模块中查找(可配置的iirc)test_foo.py测试模块和test_foo()测试函数。