Django Test | Как передать словарь, содержащий словарное значение, через clients.post

У меня есть словарь A, который содержит одно значение, которое также является словарем B

B = {"k1": "v1", "k2": "v2", "k3": "v3"}
A = {"User": B}

Этот тип словаря используется в одной из моих views функций

def views_function(request):
   # request.data is a dictionary containing a single value that is also a dictionary. Just like A

Я пытаюсь написать модульный тест для views_function из django.test.TestCase.

from django.test import TestCase

class test_cases(TestCase):
    
    def setUp(self):
        self.B = {"k1": "v1", "k2": "v2", "k3": "v3"}
        self.A = {"User": self.B}
        self.url = reverse("views_function_url")

    def test_views_function(self):
        response = self.client.post(url, self.A, format="json")

Но clients.post, похоже, не может принять A в качестве входных данных. Когда я печатаю A внутри test_views_function, он показывает правильный словарь.

def test_views_function(self):
    B = {"k1": "v1", "k2": "v2", "k3": "v3"}
    A = {"User": B}
    print(A)  # {"User": {"k1": "v1", "k2": "v2", "k3": "v3"}}
    response = self.client.post(url, A, format="json")

Но когда я добавляю оператор печати к views_function, почему-то появляется только последний ключ из B

def views_function(request):
   print(request.data.dict()) # {'User': 'k3'}

Решение оказалось простым, я случайно выбрал неправильный аргумент. Это content_type="application/json", а не format="json" в self.client.post()

Вернуться на верх