【发布时间】:2014-08-28 08:05:33
【问题描述】:
我正在尝试将 TDD(测试驱动开发)与 pytest 结合使用。
当我使用print 时,pytest 不会将print 发送到控制台。
我正在使用pytest my_tests.py 运行它。
documentation 似乎说它应该默认工作:http://pytest.org/latest/capture.html
但是:
import myapplication as tum
class TestBlogger:
@classmethod
def setup_class(self):
self.user = "alice"
self.b = tum.Blogger(self.user)
print "This should be printed, but it won't be!"
def test_inherit(self):
assert issubclass(tum.Blogger, tum.Site)
links = self.b.get_links(posts)
print len(links) # This won't print either.
没有任何东西打印到我的标准输出控制台(只是正常的进度和多少测试通过/失败)。
我正在测试的脚本包含打印:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
在unittest 模块中,默认情况下会打印所有内容,这正是我所需要的。但是,出于其他原因,我希望使用pytest。
有人知道如何显示打印语句吗?
【问题讨论】:
-
也许标准输出被覆盖了。如果你使用
sys.stdout.write("Test")会发生什么?sys.__stdout__.write("Test")怎么样?后者应始终写入系统定义的标准输出,它应该是控制台。如果这两个命令做不同的事情,那么标准输出正在改变;如果他们做同样的事情,那么问题就出在其他地方。
标签: python unit-testing python-2.7 pytest