Тест, чтобы проверить, не появляется ли предупреждение регистратора, не работает

#python #python-3.x #pytest

Вопрос:

Я новичок в pytest и создаю первую версию набора тестов для библиотеки bsl. Я хотел добавить тест, чтобы проверить, выдается ли конкретное сообщение журнала предупреждений, но, похоже, оно не работает.

Тестовый код:

 def test_record_dir_setter(tmp_path, caplog):
    """Test changing the record dir before and during an on-going recording."""
    stream = 'StreamPlayer'
    with Stream(stream, sample):
        recorder = StreamRecorder(record_dir=Path.cwd())
        recorder.record_dir = tmp_path
        recorder.start(fif_subdir=False, blocking=True, verbose=False)
        with caplog.at_level(logging.WARNING):
            recorder.record_dir = Path.cwd()
            assert 'during an ongoing recording' in caplog.text
        eve_file = recorder.eve_file
        time.sleep(2)
        recorder.stop()
 

Идея заключается в том , что после .start() вызова метода вы больше не сможете изменять record_dir каталог, в котором сохранена запись.

record_dir способ установки:

 @record_dir.setter
def record_dir(self, record_dir):
    if self._state.value == 1:
        logger.warning(
            'The recording directory cannot be changed during an '
            'ongoing recording.')
    else:
        self._record_dir = StreamRecorder._check_record_dir(record_dir)
 

С logger тем, чтобы быть регистратором библиотеки BSL.

Тест дает мне сбой с:

СБОЙ gitbsl-форкbslstream_recorderтестыtest_stream_recorder.py::test_record_dir_setter

  • Ошибка утверждения: утверждение «во время текущей записи» в «

Есть идеи, почему выходные данные устройства для записи журнала пусты?

РЕДАКТИРОВАТЬ: Забыл упомянуть; задействована многопроцессорная обработка (что является вероятной причиной). Диспетчер контекста Stream создает поток в другом процессе. Метод регистратора start создает экземпляр в другом процессе. Однако вызываемый сеттер record_dir не является частью этого дополнительного экземпляра и должен присутствовать в основном процессе.