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

时间:2015-03-28 16:17:34

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

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

def validate(request)

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

  

注意:使用API​​RequestFactory时,返回的对象是Django的标准HttpRequest,而不是REST框架的Request对象,只有在调用视图后才会生成。

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

1 个答案:

答案 0 :(得分:1)

能够通过不将请求发送到验证方法来绕过这个,而是将request.DATA发送。这样,验证方法可以根据请求独立,但只依赖于发送给它们的数据。