Я пишу тестовые файлы для модуля Python
class A:
def func(self):
B().sub_func()
class B:
def sub_func(self):
pass
, и мне нужен побочный эффект блока B при тестировании A. Мой вопрос заключается в том, как заменить класс B в тестовом файле.
class ATest(unittest.TestCase):
def test_a(self):
a=A()
a.func()
#now object a will invoke a func that B is a mock class
следуя инструкции принятого ответа.Я заканчиваю свои тесты
tws / main.py
class A(object):
def func(self):
b=B()
print('func ')
b.sub_func()
class B(object):
def sub_func(self):
print('real sub')
c=C()
c.c_sub_func()
class C(object):
def c_sub_func(self):
print('c')
test / test_mock.py
import unittest
from unittest.mock import patch
from tws.main import A
class B():
def sub_func(self):
print('mock')
return 12
class TestMock(unittest.TestCase):
@patch('tws.main.B',new=B)
def test_af(self):
a=A()
print(a.__dict__)
a.func()
print('rrr')
это напечатает макет, надеюсь, это поможет другим людям сте же проблемы.