首页 > 解决方案 > Django Rest Framework APITestCase 不为所有字段使用 JSON 数据类型

问题描述

使用 DRF 的 APITestCase,我希望将 API 测试的结果序列化为 JSON 数据类型。具有属性的对象size = decimal.Decimal('20.0')通过 API 端点正确发送为size: 20.0COERCE_DECIMAL_TO_STRING参数设置为True)。

但是,在使用 APITestCase 测试端点时,会保留原始数据类型。APIClient.get(url).response.data.get("size").__class__=十进制。十进制

其他复杂类型也会发生同样的情况。

为什么是这样?是否可以更改为查看 API 客户端会收到什么?

标签: djangorestdjango-rest-framework

解决方案


我认为您可能需要调用.json()响应的方法

from rest_framework.test import APITestCase


class DRFTest(APITestCase):
    def test_decimal(self):
        res = self.client.get("some/-url")
        self.assertEqual(
            res.json()["size"],
            20.0
        )

推荐阅读