私は py.test を使用して、かなりの量の stdlib ロギングを含む私のモジュールをテストしています。もちろん、テストが失敗した場合に関連するすべてのログメッセージを取得できるように、ログが py.test によってキャプチャされる stdout にログを記録することを望みます。
これに関する問題は、このオブジェクトが py.test によって破棄された後、ロギング モジュールが py.test によって提供される「stdout」オブジェクトにメッセージを記録しようとすることです。つまり、次のようになります。
Traceback (most recent call last):
File "/usr/lib/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/usr/lib/python2.6/logging/__init__.py", line 1508, in shutdown
h.flush()
File "/usr/lib/python2.6/logging/__init__.py", line 754, in flush
self.stream.flush()
ValueError: I/O operation on closed file
でキャプチャをオフ-s
にしても問題はありませんが、もちろん、無関係なロギングでテスト出力が読めなくなります。
stdlib ロギングを py.test と統合する適切な方法を教えてもらえますか?
(これを見てみましたが、問題なく動作するはずなので、あまり役に立ちませんでした)