在Django Rest框架中测试时,请在API请求工厂中调用视图



每当我们使用API请求工厂测试DJANGO REST框架中的API时,为什么我们已经传递URL时会调用视图。查看以下代码以更好地理解。

request = self.factory.post("/api/v1/menu/", data)
views = MenuResource.as_view({"post": "post"})
response = views(request)
response.render()
self.assertEqual(201, response.status_code)

在上述代码中,我们调用URL并调用视图。正在要求视图呈现URL上的视图,但这不是我的用例。我只想测试响应代码。是否有一种方法可以获取响应代码而不呈现视图,因为这对我的用例来说是过度杀死的。

我已经寻找了其他方法,除了使用API请求工厂,但我只是想知道为什么API请求工厂需要调用视图。与Django Rest框架中存在的其他API测试模块相比,是否有任何优势。

那是因为您没有向URL提出请求。

request = self.factory.post("/api/v1/menu/", data)只是创建一个请求对象供您使用它实际上并没有提出请求。

因此,在您的情况下测试视图包括创建一个请求对象,然后将其传递到模仿该视图的实际请求方式和处理的视图中。

如果要发送实际请求,则需要模拟将处理实际请求的测试服务器。

最新更新