У меня есть следующий тест:
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.
Так что технически эта часть кода не должна выполняться, правильно? Почему мой тестовый пример ожидает выполнения строки после проверки?
Если это допустимое ожидание, как мне изменить мой тест?