【问题标题】:Python tests. Patch method from library in venvPython 测试。 venv库中的补丁方法
【发布时间】:2017-02-21 08:24:13
【问题描述】:

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

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

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

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

所以我尝试了:

@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 所在的文件夹相同。

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

【问题讨论】:

  • 您可以从 rest_framework.serializers.BaseSerializer.is_valid 对其进行修补,并且您可以保留从 virtualenv 到库的路径。

标签: python django testing mocking


【解决方案1】:

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

【讨论】:

  • 谢谢,成功了,现在不知道如何避免AssertionError: You must call .is_valid() before accessing .validated_data.
猜你喜欢
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多