我有一个Django-rest-framework API,我想进行单元测试。更具体地说,我想单独测试一些数据验证方法。这些数据验证方法将获取请求作为其参数,如下所示:
def validate(request)
为了单独测试,我需要一种创建请求的方法。在django-rest-framework中,有APIRequestFactory,可用于创建请求。主要问题是,APIRequestFactory不会创建django-rest-framework使用的相同请求。相反,它将创建网站所述的常规django请求:
注意:使用APIRequestFactory时,返回的对象是Django的标准HttpRequest,而不是REST框架的Request对象,只有在调用视图后才会生成。
但是因为那些验证方法使用了django-rest-frameworks请求,所以我无法使用APIRequestFactory对它们进行单元测试。有没有办法单独测试那些,或者我应该只使用APIClient,并尝试测试整个APIView?我不想这样做,因为那时它不会是一个纯粹的单元测试。使用APIClient,我只能获得响应,而不是请求。为什么django-rest-framework请求没有APIRequestFactory?我的意思是,如果这些是django-rest中使用的那些,那么请求工厂为什么不生成那些呢?
答案 0 :(得分:1)
能够通过不将请求发送到验证方法来绕过这个,而是将request.DATA发送。这样,验证方法可以根据请求独立,但只依赖于发送给它们的数据。