Скажите, что у меня есть следующее:
models.py
:
class FooQuerySet(models.QuerySet):
def bar(self):
return self.filter(...)
class Foo(models.Model):
...
objects = models.Manager.from_queryset(FooQuerySet)
views.py
:
class FooListView(ListView):
model = Foo
def get_queryset(self):
qs = super().get_queryset()
return qs.bar()
И я хочу проверить, что models.FooQuerySet.bar
вызывается, когда вызывается представление.
Пока у меня есть:
request = RequestFactory().get('')
view = FooListView.as_view()
with mock.patch('<best_guess>') as mocked:
mocked.return_value = Foo.objects.none()
view(request)
mocked.assert_called_once()
Где <best_guess>
было:
foo_app.models.FooQuerySet.bar
foo_app.models.Foo.objects.bar
foo_app.views.Foo.objects.bar
Ни один из которых не работал.Даже если бы я наткнулся на волшебную заплатку, которая сработала , я боюсь, что просто не понимаю, что здесь происходит.Каков правильный способ проверки того, что FooQuerySet.bar()
называется?
(Существует также дополнительная сложность, связанная с QuerySets, поэтому мне, возможно, однажды понадобится узнать, вызывается ли FooQuerySet.any().amount().of().weird().methods().bar()
).