2017-02-21 26 views
1

库补丁的方法,我知道如何修补我的方法:Python测试。从VENV

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

这会修补我的方法upload_image模块connections文件夹中common(我使用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所在的同一个文件夹中。

那么如何修补这个库方法呢?

+1

您可以从rest_framework.serializers.BaseSerializer.is_valid修补它,你可以留下您的virtualenv的路径图书馆出来。 – Nrzonline

回答

2

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

+0

谢谢,这工作,现在不知道如何避免'AssertionError:你必须调用.is_valid()之前访问.validated_data.' – Snobby