在测试功能中,我有这样的代码:
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 }},因为要在功能的其他部分调用其他功能来进行测试,因此必须保持其功能。
那么,修补它的最佳方法是什么?