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

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