Я использую py.test для тестирования некоторых моих модулей, которые содержат довольно много stdlib ведение журнала. Я, конечно, хотел бы, чтобы журнал регистрировался в stdout, который захватывается py.test, так что я получу все соответствующие сообщения журнала, если тест не удастся.
Проблема заключается в том, что модуль регистрации завершает попытку записать сообщения в объект 'stdout', предоставленный py.test после того, как этот объект был отброшен py.test. То есть, я получаю:
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?
(я пробовал посмотреть this , где похоже, что он должен работать без проблем, так что это мне не сильно помогло)