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

Python测试。venv库中的补丁方法,python,django,testing,mocking,Python,Django,Testing,Mocking,我知道如何修补我的方法: @patch('common.connections.upload_image') def test_upload(self, mocked_upload_image): mocked_upload_image.return_value = 'Mocked url' 这将在文件夹common中的模块连接中修补我的方法upload_image(我正在使用Django,文件夹common位于根目录下) 但我想从Django Rest framework中修补序列化

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

@patch('common.connections.upload_image')
def test_upload(self, mocked_upload_image):
    mocked_upload_image.return_value = 'Mocked url'
这将在文件夹
common
中的模块
连接
中修补我的方法
upload_image
(我正在使用Django,文件夹
common
位于根目录下)

但我想从Django Rest framework中修补序列化程序,它位于
venv.lib.python2.7.site packages.Rest\u framework.serializers.BaseSerializer.is\u 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
但它不起作用。表示导入错误:没有名为venv的模块。 我的
venv
文件夹位于同一文件夹中,上面提到的
common
位于该文件夹中


那么如何修补此库方法呢?

尝试使用
@patch('rest\u framework.serializers.BaseSerializer.is\u valid')

您可以从rest\u framework.serializers.BaseSerializer.is\u对其进行修补,并且您可以保留从virtualenv到库的路径。谢谢,这很有效,现在不知道如何避免断言错误:您必须在访问.validated\u数据之前调用.is\u valid()。