Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
django测试运行之间未重置Mock.patch_Django - Fatal编程技术网

django测试运行之间未重置Mock.patch

django测试运行之间未重置Mock.patch,django,Django,我有两个测试,测试调用外部模块的视图。我用mock.patch模拟了它。我使用django的测试客户端调用视图 第一个测试(返回404的测试)成功完成,并调用正确的模拟 当第二个测试运行时,一切正常运行,但被测试代码可以访问的模拟是前一个测试中的模拟 在本例中,您可以看到测试输出中的ID不正确(在第91行附近) 缓存在哪里?我最初的想法是,由于urlconf的原因,主模块的导入在测试运行之间以某种方式被缓存。通过追踪源代码,我找不到这样的情况 预期值:两项测试均通过 实际:由于陈旧的模拟导入,第

我有两个测试,测试调用外部模块的视图。我用
mock.patch
模拟了它。我使用django的测试客户端调用视图

第一个测试(返回404的测试)成功完成,并调用正确的模拟

当第二个测试运行时,一切正常运行,但被测试代码可以访问的模拟是前一个测试中的模拟

在本例中,您可以看到测试输出中的ID不正确(在第91行附近)

缓存在哪里?我最初的想法是,由于urlconf的原因,主模块的导入在测试运行之间以某种方式被缓存。通过追踪源代码,我找不到这样的情况

预期值:两项测试均通过

实际:由于陈旧的模拟导入,第二次测试失败

如果我注释掉404测试,则另一个测试通过。
该视图在url配置文件中注册为string-y版本的repos.views.github\u webhook

我不完全理解是什么导致了您看到的确切行为,尤其是为什么模拟在第一次测试中似乎工作正常。但是根据mock文档,您应该在测试的名称空间中进行补丁,即
补丁(“views.tasks”)


非常感谢。这解决了问题!我很想知道为什么。