如何在Django中测试APIView,Django Rest框架

fdbelqdn  于 2022-11-26  发布在  Go
关注(0)|答案(1)|浏览(147)

我正在用Django + Django Rest Framework做一个API,我正在尝试测试一个视图的GET方法:
查看方式:

class StuffView(APIView):
        queryset = Stuff.objects.none()

        def get(self, request, format=None):    
            data = Stuff.objects.all().order_by('-primaryKey')     
            StuffSerializer(data, many=True)
            return Response(serializer.data, 200)

在我的测试中,我为Stuff创建了测试数据,然后利用DRF的APIClient运行该测试:

def test_stuff_view_get_all(self):
        response = self.client.get('/api/stuff/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data), len(Stuff.objects.all().order_by('-primaryKey') ))

这是可行的,但我不确定length是否是比较这些东西的最佳方式。我想测试的另一件事是确保它按主键正确排序。我是否应该序列化查询集并将字典与response.data进行比较?
有没有最佳实践来做这件事?有没有我错过了一些我应该测试的东西?

sy5wg1nm

sy5wg1nm1#

您需要将响应数据与发布的测试数据进行比较,这将是检查发布数据内容的一个很好的测试。您还可以检查响应数据的接收顺序,方法是使用索引response.data[0]表示第一项,[1]表示第二项,依此类推。self.assertEqual(response.data[0].get('score '),self.result.score)

相关问题