python unittest, позволяющий / тестировать функции с объектом NoneType - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть следующий тест:

def test_sender_stream_generator_staggered():
    sender_stream = SenderStream(None, None, None, payload)
    stream_queue = Queue()
    stream_queue.put(b'a')
    stream_queue.put(b'b')
    # Queue empty

    with sender_stream:
        generator = sender_stream.generator(stream_queue)
        val = generator.__next__()

    assert val == b'ab'
    assert stream_queue.empty()

Класс SenderStream принимает несколько объектов в пределах init. Одна из функций - generator (которая тестируется в приведенном выше тестовом примере) определена в классе SenderStream следующим образом:

    def generator(self, buff, is_bundle=True):
        self._buff = buff

        while not self.closed:
            chunk = buff.get()

            if chunk is None:
                self.log.debug("poison pill detected..")
                buff.task_done()
                break

            if not isinstance(self.stt_client, type(None)):
                if self.stt_client.is_encoding_required(self.media_start_content): #python unittest fails here. AttributeError: type object 'NoneType' has no attribute 'is_encoding_required'

                    chunk = self.stt_client.reencode_audio(chunk, self.media_start_content)


        ...

У меня проблемы с выяснением, как получить тестовый пример пройден, поскольку unittest запускается в AttributeError для self.stt_client.is_encoding_required.

Конечно, stt_client объект передается как None, однако, метод generator имеет проверку на объект типа None.

  1. Так что технически эта часть кода не должна выполняться, правильно? Почему мой тестовый пример ожидает выполнения строки после проверки?

  2. Если это допустимое ожидание, как мне изменить мой тест?

...