Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对Django rest框架请求进行单元测试?_Python_Django_Rest_Unit Testing_Django Rest Framework - Fatal编程技术网

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

Python 如何对Django rest框架请求进行单元测试?,python,django,rest,unit-testing,django-rest-framework,Python,Django,Rest,Unit Testing,Django Rest Framework,我有一个Django rest框架API,我想对其进行单元测试。更具体地说,我想分别对一些数据验证方法进行单元测试。这些数据验证方法将获得一个请求作为其参数,如下所示: def validate(request) 为了单独测试它,我需要一种创建请求的方法。在django rest框架中,有,可以用于创建请求。主要问题是,APIRequestFactory不会创建django rest框架使用的相同请求。相反,它将创建站点声明的常规django请求: 注意:当使用APIRestFactory时,

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

def validate(request)
为了单独测试它,我需要一种创建请求的方法。在django rest框架中,有,可以用于创建请求。主要问题是,APIRequestFactory不会创建django rest框架使用的相同请求。相反,它将创建站点声明的常规django请求:

注意:当使用APIRestFactory时,返回的对象是Django的标准HttpRequest,而不是REST框架的请求对象,它只在调用视图后生成


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

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

您能提供一个示例吗?我正在努力理解如何使用
apirestFactory直接测试这些函数,如
create()
update()