Django подражание функции в представлении не работает

Ок, вот ситуация.
Я использую Django, DRF и для тестов django.test и unitest.mock
. У меня есть View, который выполняет метод внутри post-запроса, отправляя сообщение в Kafka (send_message_to_kafka). Этот метод не находится в наборе представлений, и я пытаюсь его подружить.
Я написал 2 теста.

  1. для вызова метода wrapper_send_message_to_kafka(), который вызывает send_message_to_kafka внутри него.
  2. self.client.post("/viewset/", data=payload).

Оба этих теста имитируют функцию send_message_to_kafka, минуя фактическую публикацию в Kafka.

@mock.patch('utils.send_message_to_kafka', return_value={"success": True, "message": "Message sent to Kafka successfully!"}) 

Но первый работает, как и ожидалось, а второй не высмеивается.

View

@api_view(["POST"])
def example_view(request):
    if request.method == "POST":
    ...
       result = send_message_to_kafka(json.dumps((message)))

Тесты

from django.test import TestCase
import unittest.mock as mock
...

@mock.patch('utils.pubsub.send_message_to_kafka', return_value={"success": True, "message": "Message sent to Kafka successfully!"})
def test_send_message_to_kafka(self, send_message_mock):
    result = wrapper_send_message_to_kafka()
    self.assertTrue(result["success"])    

@mock.patch('utils.send_message_to_kafka', return_value={"success": True, "message": "Message sent to Kafka successfully!"})
def test_start_run(self, send_message_mock):
    response = self.client.post(
       "/execute/",
       data=payload,
       format="json",
    )
Вернуться на верх