如何在pytest中打印到控制台?

我正在尝试将TDD(测试驱动的开发)与结合使用pytestpytest使用时不会print进入控制台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出于其他原因使用。

回答:

默认情况下,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

回到顶部