Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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_Python_Django_Unit Testing_Django Class Based Views - Fatal编程技术网

Python 视图中的模拟函数-Django

Python 视图中的模拟函数-Django,python,django,unit-testing,django-class-based-views,Python,Django,Unit Testing,Django Class Based Views,我刚开始编写单元测试,这个问题可能很傻,但我在做了大量研究后发布了这个问题 我正试图在centralized/views.py中为一个函数编写一个单元测试,该函数正在许多其他视图中使用 函数如下所示 def make_job(self, request, *args, **kwargs): ..... ..... return Response(data, status=status.HTTP_200_OK) 我需要在单元测试中模拟请求的帮助,因为这个函数是由其他视图调用的,

我刚开始编写单元测试,这个问题可能很傻,但我在做了大量研究后发布了这个问题

我正试图在centralized/views.py中为一个函数编写一个单元测试,该函数正在许多其他视图中使用

函数如下所示

def make_job(self, request, *args, **kwargs):
   .....
   .....
   return Response(data, status=status.HTTP_200_OK)
我需要在单元测试中模拟请求的帮助,因为这个函数是由其他视图调用的,所以我不确定如何在不依赖url路径的情况下独立测试这个函数

模拟此请求的方法是什么


谢谢

您可以将mock.patch用作函数装饰器,或者更好地用作contextmanager:

with mock.patch('path.to.your.app.Class.method', new=new_function_with_return):
    # do something here
    pass

[编辑]对不起,我读得有点太快了。您可以通过Django的RequestFactory创建假请求对象:


Hi@odi-感谢您的回复,我尝试了请求工厂,但这需要url路径,由于多个视图使用此功能,我不确定应该使用哪个请求url。所以我想知道是否有一种独立测试的方法——在测试理论中,您应该测试所有url路径,以达到100%的覆盖率和分支转移;)对某些功能只进行集成测试并不理想,但有时这是获得良好覆盖率的唯一经济方法。从经验来看:在大型遗留代码基础上进行一些集成测试在疯狂到理智的尺度上要高出几个数量级。