Я использую py.test для тестирования некоторых моих модулей, которые содержат довольно много журналов stdlib. Я, конечно, хотел бы, чтобы ведение журнала выводилось на стандартный вывод, который фиксируется 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?
(Я попытался просмотреть это, где, похоже, он должен работать без проблем, так что мне не помогло)
py.test
, и позволяю ему собирать и запускать все, что ему заблагорассудится. - person porgarmingduod   schedule 22.01.2011