Как я могу объединить ведение журнала stdlib с py.test

Я использую 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 , где похоже, что он должен работать без проблем, так что это мне не сильно помогло)

6
задан Community 23 May 2017 в 12:02
поделиться