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()。