如何解决仅修补深度嵌套的方法调用
在测试功能中,我有这样的代码:
task = TransferTask.objects.get(id=id) # a Django database access
source_connector = task.job.source.server.create_connector()
dest_connector = task.job.destination.server.create_connector()
我想要的是仅修补create_connector
方法调用以返回假对象。但是我想为source_connector
和dest_connector
返回不同的伪造对象,这就是patch.object(MyServerClass,"create_connector",return_value=my_fake_connector)
无法解决的原因,因为两者最终都将具有相同的伪造对象。
我尝试了类似patch("my_module.TransferTask.job.source.server.create_connector",return_value=my_fake_source_connector)
的操作,但是却收到一个错误,提示没有属性source
(也许是因为它是相关的Django模型?!)。
我还想保留task
,job
,source
和server
的真实对象,只修补{{1 }},因为要在功能的其他部分调用其他功能来进行测试,因此必须保持其功能。
那么,修补它的最佳方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。