Py学习  »  Django

测试期间django发送json修补程序请求

pyprism • 4 年前 • 598 次点击  

我正在使用django 3.0。以下是我试图测试的观点:

def myview(request):
   values = {}
   if request.method == 'PATCH':
        keys = QueryDict(request.body)
        print(keys)
        for key in keys:
            cache.set(key, keys[key], timeout=300)
            values[key] = keys[key]
        return JsonResponse(values, status=200)

我的测试用例:

class ValueViewTestCase(TestCase):

    def setUp(self):
        self.c = Client()

    def test_value_updated(self):
        data = {'key_1': 'updated_val'}
        response = self.c.patch('/values/', data)
        print(response.json())
        # self.assertEqual(response.json(), data)  # ->>  test failing

控制台日志:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
<QueryDict: {'{"key_1": "updated_val"}': ['']}>
{'{"key_1": "updated_val"}': ''}

我想将数据作为键值对发送,但不知怎么的,它的格式不正确,现在整个请求都充当了一个键。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51881
 
598 次点击  
文章 [ 1 ]  |  最新文章 4 年前
engin_ipek
Reply   •   1 楼
engin_ipek    4 年前

数据格式错误。

querydict不包含json,而是包含一系列请求参数,如 key_1=1&key_2=2&key3=3 . 试试这个:

def test_value_updated(self):
    data = 'key_1=1&key_2=2&key3=3'
    response = self.c.patch('/values/', data)
    print(response.json())

希望这有帮助。