У меня есть следующие настройки:
# main.py
from foo import Foo
from bar import Bar
def main():
foo = Foo()
result = Bar.method_1(foo)
print(result)
# bar.py
class Bar:
def method_1(foo):
return foo.method_2()
# foo.py
class Foo:
def __method():
return EXTERNAL_CALL
def method_2():
return self.__method()
(класс Bar
и method_1
немного сложнее в реальности; я знаю, что эта текущая настройка кажется избыточной)
Моя цель - создать тест для main()
, но я хочу смоделировать EXTERNAL_CALL
через патч.
Я читал документацию здесь и о том, где правильно установить исправления, но я все еще допускаю ошибку.
В настоящее время я думаю, что, поскольку main
- это то, что создает экземпляр класса, мне нужно сделать следующее:
import unittest
from unittest import mock
from src import main, bar, foo
@mock.patch("main.Foo")
def mock(mock_class):
mock_class.method_2.return_value = "MOCKED"
class TestModel(unittest.TestCase):
def test_main():
main.main()
Вместо распечатки MOCKED
я получаю сообщение об ошибке при вызове __method()
и попытке сделать внешний вызов. Мой патч настроен неправильно?