編集:使用していることに注意してくださいPython 2.6(タグ付き)
私が持っているとしましょう:
class Foo:
def bar(self):
print 'bar'
return 7
そして、私は次のユニットテストを持っていると言います:
import unittest
class ut_Foo(unittest.TestCase):
def test_bar(self):
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
だから私が実行した場合:
unittest.main()
私は得る:
bar # <-- I don't want this, but I *do* want the rest
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Exit code: False
私の質問は、ユニットテストフレームワークの出力を取得しながら、テスト対象のオブジェクトの出力を抑制する方法はありますか?
編集この質問は フラグ付き質問 の複製ではありません。 pythonスクリプト。
この質問は、ユニットテストの実行中にpythonスクリプトの通常のstdoutを非表示にすることについて尋ねていますが、それでもunittest stdoutを表示したいのですが、私のstdoutを無効にしたくありません。テスト済みのスクリプト。
オプション「-b」を使用してユニットテストを呼び出します-バッファstdoutおよびstderr
Foo.py
class Foo:
def bar(self):
print "bar"
return 7
test.py
import unittest
from Foo import Foo
class test_Foo(unittest.TestCase):
def test_bar(self):
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
if __name__ == "__main__":
unittest.main()
$ python test.py -b
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
nose
を使用する$ pip install nose
コマンドをインストールするものnosetests
test
のデフォルトのテスト検出ルールを満たすために、クラスとメソッドのプレフィックスがnose
になるようにテストスイートを変更したことに注意してください。
nosetests
は、デフォルトでは出力を表示しません
$ nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
出力を確認したい場合は、-s
スイッチを使用してください。
$ nosetests -s
bar
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK