Python 测试。 venv 库中的补丁方法

标签 python django testing mocking

我知道如何修补我的方法:

@patch('common.connections.upload_image')
def test_upload(self, mocked_upload_image):
    mocked_upload_image.return_value = 'Mocked url'

这将在文件夹 common 的模块 connections 中修补我的方法 upload_image (我正在使用 Django,文件夹 common 位于根)。

但我想从 Django Rest 框架中修补序列化程序,它位于 venv.lib.python2.7.site-packages.rest_framework.serializers.BaseSerializer.is_valid

所以我尝试了:

@patch('venv.lib.python2.7.site-packages.rest_framework.serializers.BaseSerializer.is_valid')
def test_upload(self, mocked_is_valid):
    mocked_is_valid.return_value = True # this doesn't work

但它不起作用。说 ImportError: No module named venv。 我的 venv 文件夹与上面提到的 common 位于同一个文件夹中。

那么如何给这个库方法打补丁呢?

最佳答案

尝试使用 @patch('rest_framework.serializers.BaseSerializer.is_valid')

关于Python 测试。 venv 库中的补丁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42362090/

相关文章:

python - Matplotlib:在同一轴位置显示次要刻度和主要刻度

python - 为什么子进程启动 "extra"应用程序?

django - 使用来自另一个 QuerySet : Possible? 的查询过滤 django QuerySet

testing - JMeter - 长时间均匀地执行样本

testing - 推荐的基于模型的测试工具

java - 使用 EasyMock 测试预期方法得到 IllegalStateException

python - 如何加载动画 GIF 并获取 Pygame 中的所有单独帧?

python - Django - 没有模型的登录用户

python - Django Rest框架如何更改: "This field may not be blank." error message

javascript - 在 Django View 中将 markdown 从文件传递到模板