Моя функция ищет объект Actor
в базе данных и вызывает его метод do_something()
с переданным аргументом.
from my_app.models import Actor
def my_function(id, stuff):
actor = Actor.objects.get(id=id)
return actor.do_something(stuff)
Я хочу, чтобы мой модульный тест проверил две вещи:
1 . my_function
находит Actor
Я хочу.
2. my_function
вызывает метод актера do_something
, как и ожидалось.
from unittest import mock
from django.test import TestCase
from my_app.models import Actor
from my_app.views import my_function
class ViewsTestCase(TestCase):
@classmethod
def setUpTestData(cls):
self.actor = Actor.objects.create(id=42, name='John')
def test_my_function(self):
with mock.patch.object(Actor, 'do_something') as mock_do:
my_function(id=42, stuff='a-short-string')
mock_do.assert_called_once_with('a-short-string')
Это работает, чтобы my_function
вызвал do_something
Как я и хотел, но я не знаю, как быть уверенным, что он нашел Актера, которого я попросил его найти. Этот тест пройдет, даже если my_function
найдет не того актера. Есть ли способ проверить это?