23

テストを実行するために py.test を使用しています。テストを並行して実行するために pytest-xdist と一緒に使用しています。テストで print ステートメントの出力を確認したいと考えています。

私は持っています:Ubuntu 15.10、Python 2.7.10、pytest-2.9.1、pluggy-0.3.1。

これが私のテストファイルです:

def test_a():
    print 'test_a'


def test_b():
    print 'test_b'

py.testを実行すると、何も出力されません。これは当然のことです。デフォルトでは、py.test は出力をキャプチャします。

py.test -sを実行すると、 test_atest_bが出力されます。

py.test -s -n2を実行すると、何も出力されません。-n2の使用中に print ステートメントを機能させるにはどうすればよいですか?

出力とこのバグレポートをキャプチャせずに、すでにpytest + xdistを読みました。

4

1 に答える 1

9

github https://github.com/pytest-dev/pytest/issues/1693でこの問題についての説明を見ただけです

pytest-xdistsys stdin/stdout を使用して実行を制御します。出力を表示する唯一の方法は std.err です。

import sys
def test_a():
    print >> sys.stderr, 'test_a'


def test_b():
    print >> sys.stderr, 'test_b'

良い考えではありませんが、うまくいきます。

-sまた、 xdist プラグインを使用する場合、arg は役に立たないことに注意してください。


python 3ではlogging.warning、デフォルトで stderr に書き込むように設定されているため、より良い選択だと思います。

import logging
logging.basicConfig(format='%(message)s')

def test_a():
    logging.warning('test_a')


def test_b():
    logging.warning('test_b')

ログファイルを表示するには、という名前のファイルを作成しpytest.ini、以下を追加します

log_cli = 1
log_cli_level = WARN
log_file = ./TestResults/test_log.log
log_file_level = WARN 
于 2017-09-08T07:33:19.373 に答える