如何对 Django rest 框架请求进行单元测试?

How to unit test Django rest framework requests?

我有一个 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 来绕过此问题。这样验证方法就可以独立于请求,但只依赖于发送给它们的数据。