python - 如何对 Django Rest 框架请求进行单元测试?

标签 python django rest unit-testing django-rest-framework

我有一个 Django-rest-framework API,我想对其进行单元测试。更具体地说,我想单独对一些数据验证方法进行单元测试。这些数据验证方法将获取请求作为其参数,如下所示:

def validate(request)

为了单独测试它,我需要一种创建请求的方法。在 django-rest-framework 中,有 APIRequestFactory ,可用于创建请求。主要问题是,APIRequestFactory 不会创建 django-rest-framework 使用的相同请求。相反,它将创建常规的 django 请求,如网站所述:

Note: When using APIRequestFactory, the object that is returned is Django's standard HttpRequest, and not REST framework's Request object, which is only generated once the view is called.

但是因为这些验证方法使用 django-rest-frameworks 请求,所以我无法使用 APIRequestFactory 对它们进行单元测试。有没有办法单独对这些进行单元测试,或者我应该只使用 APIClient,并尝试测试整个 APIView?我不想这样做,因为那样它就不是一个纯粹的单元测试。使用 APIClient,我只能得到响应,而不能得到请求。为什么 django-rest-framework 请求没有 APIRequestFactory?我的意思是,如果这些是 django-rest 中使用的,那么为什么请求工厂不生成这些呢?

最佳答案

可以通过不将请求发送到验证方法,而是发送 request.DATA 来绕过此问题。这样,验证方法就可以独立于请求,而仅依赖于发送给它们的数据。

关于python - 如何对 Django Rest 框架请求进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319446/

相关文章:

rest - Shopify:感谢页面上提供的变量?

java - 无法接受 json 作为 REST POST 请求中的输入

Python:在子程序中使用模板和替换

python - 你如何将一个 Numpy 数组 (mxn) 展开成一个向量

python - 两次python之间的区别

python - 在 Google App Engine 上使用 Mandrill/MailChimp 发送确认邮件

Python 不加载 CSS

python - celery 、kombu 和 django - 导入错误

python - 如何在 ModelForm 中使用 forms.ChoiceField()?

c# - 在 Silverlight 中发出 Web 请求的问题