Mock не вызывается подпроцессомPython

Программы на Python
Ответить
Anonymous
 Mock не вызывается подпроцессом

Сообщение Anonymous »

Экземпляр класса A запускает подпроцесс, который вызывает метод экземпляра класса B. В реальной жизни он работает так, как и ожидалось, но модульные тесты терпят неудачу, поскольку фиктивный объект, заменяющий объект класса B, не сообщает о вызове.
Минимальный код:

Код: Выделить всё

from multiprocessing import Process

class Main:
def __init__(self, mock):
self._mock = mock
process = Process(target=self.task)
process.start()
process.join()

def task(self):
self._mock.method()
Тесты:

Код: Выделить всё

from unittest.mock import Mock
from MinimalCode import Main

mock = Mock(unsafe=True)
def test_process():
main = Main(mock)
mock.method.assert_called()
Результат Pytest:

Код: Выделить всё

_____________________________________________________________ ERROR collecting test_Process.py ______________________________________________________________
test_Process.py:9: in 
test_process()
test_Process.py:7: in test_process
mock.method.assert_called()
/usr/lib/python3.11/unittest/mock.py:902: in assert_called
raise AssertionError(msg)
E   AssertionError: Expected 'method' to have been called.
Как мне писать тесты для макетов, вызываемых в подпроцессах?

Подробнее здесь: https://stackoverflow.com/questions/798 ... subprocess
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»