如何在pytest中打印到控制台?
我正在尝试将TDD(测试驱动的开发)与结合使用pytest
。 pytest
使用时不会print
进入控制台print
。
我正在pytest my_tests.py
运行它。
在documentation
似乎是说,它应该是默认的工作:http://pytest.org/latest/capture.html
但:
import myapplication as tumclass 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
出于其他原因使用。
回答:
默认情况下,py.test
捕获标准输出的结果,以便它可以控制其输出结果的方式。如果不这样做,它将喷出大量文本,而没有测试打印该文本的上下文。
但是,如果测试失败,它将在结果报告中包括一部分,以显示在该特定测试中打印出的标准内容。
例如,
def test_good(): for i in range(1000):
print(i)
def test_bad():
print('this should fail!')
assert False
结果如下:
>>> py.test tmp.py============================= test session starts ==============================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, pep8, xdist
collected 2 items
tmp.py .F
=================================== FAILURES ===================================
___________________________________ test_bad ___________________________________
def test_bad():
print('this should fail!')
> assert False
E assert False
tmp.py:7: AssertionError
------------------------------- Captured stdout --------------------------------
this should fail!
====================== 1 failed, 1 passed in 0.04 seconds ======================
注意该Captured stdout
部分。
如果您希望print
在执行语句时看到它们,可以将-s
标志传递给py.test
。但是,请注意,有时可能难以解析。
>>> py.test tmp.py -s============================= test session starts ==============================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, pep8, xdist
collected 2 items
tmp.py 0
1
2
3
... and so on ...
997
998
999
.this should fail!
F
=================================== FAILURES ===================================
___________________________________ test_bad ___________________________________
def test_bad():
print('this should fail!')
> assert False
E assert False
tmp.py:7: AssertionError
====================== 1 failed, 1 passed in 0.02 seconds ======================
以上是 如何在pytest中打印到控制台? 的全部内容, 来源链接: utcz.com/qa/422444.html