Я макетирую метод класса и хочу проверить экземпляр класса, из которого был вызван метод, чтобы проверить, что часть создания моей функции работает, как ожидалось.
В моем конкретном случае do_stuff
пытается записать bar_instance
в файл Excel, и я не хочу, чтобы это произошло, т.е.
def create_instance(*args):
return Bar(*args)
class Bar():
def __init__(self, *args):
self.args = args
def do_stuff(self):
pass
def foo(*args):
bar_instance = create_instance(*args)
bar_instance.do_stuff()
Затем в тестовом файле
from unittest import TestCase
from unittest.mock import patch
from path.to.file import foo
class TestFoo(TestCase):
@patch('path.to.file.Bar.do_stuff')
def test_foo(self, mock_do_stuff):
test_args = [1]
_ = foo(*test_args)
# Test here the instance of `Bar` that `mock_do_stuff` was called from
# Something like
actual_args = list(bar_instance.args)
self.assertEqual(test_args, actual_args)
Я поставил перерыв в тестовой функции после запуска foo(*test_args)
, но не вижу никакого пути от смоделированного метода доступа к экземпляру Bar
, из которого он был вызван, и я немного застрял. Я не хочу макетировать Bar
далее код, поскольку хочу убедиться, что создается правильный экземпляр Bar
.