DRF 测试 JSON 对象列表是否包含特定对象

DRF test if JSON list of objects contains a specific object

我正在测试来自 Django DRF 的端点,它会生成一个 JSON 对象列表。我正在尝试检查特定对象是否在返回列表中。我试过 assertIn 和 assertContains,但它们会产生错误。

我的端点returns对象列表:

[
  {
    'id' : 1,
    'name': 'HelpMe'
  },
  {
    'id' : 2,
    'name': 'WhatToDo'
  },
  {
    'id' : 3,
    'name': 'ToSolveThis'
  },
]

assertIn 的测试代码:

    def test_list(self):      
        client = APIClient()

        response = client.get('/api/some_list/', format='json')

        self.assertEqual(
            len(response.data),
            19
        )

        self.assertIn(
            response.data,
            {
                "id": 2,
                "name": "WhatToDo"
            }
        )

assertIn 产生 TypeError: unhashable type: 'ReturnList'

assertContains 的测试代码:

    def test_list(self):      
        client = APIClient()

        response = client.get('/api/some_list/', format='json')

        self.assertEqual(
            len(response.data),
            19
        )

        self.assertContains(
            response,
            {
                "id": 2,
                "name": "WhatToDo"
            }
        )

assertContain 刚刚没有通过测试。

测试响应中特定对象是否存在于 JSON 列表中的最佳方法是什么?

您已经颠倒了以下参数:assertIn,试试这个:

self.assertIn({"id": 2, "name": "WhatToDo"}, response.data)

# Or you can also write:
self.assertTrue({"id": 2, "name": "WhatToDo"} in response.data)