pytestでコンソールに出力するにはどうすればよいですか? 質問する

pytestでコンソールに出力するにはどうすればよいですか? 質問する

pytestを使用するとコンソールに出力されませんprintドキュメンテーションデフォルトで動作するはずだと言っているようです。

pytest my_tests.pyこのテストを実行するために使用しています:

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.

標準出力コンソールには何も印刷されません (通常の進行状況と、合格/失敗したテストの数のみ)。

私がテストしているスクリプトには print が含まれています:

class Blogger(Site):
    get_links(self, posts):
        print len(posts)   # It won't get printed in the test.

モジュールではunittest、すべてがデフォルトで印刷されます。これはまさに私が必要としているものです。ただし、pytest他の理由で使用したいと考えています。

印刷ステートメントを表示する方法を知っている人はいますか?

ベストアンサー1

デフォルトでは、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 ======================

おすすめ記事