我有一个任务
def task(): a = worker() a.do_some_work()
Worker
本身是一个单独的类,在单独的模块中,谁使用这样的Driver
类,
class Worker(object): def __init__(self): self.driver = Driver(args) ...
并且再次Driver
是单独模块中的单独类
所以,当我尝试类似的东西
with patch('package.module.Driver', new=Mock(return_value=999)): task()
在任务中仍然有一个Driver
类实例,但不是模拟.那是错的.如何解决?
UPD1:
Driver
与Worker
住在不同的模块和Worker
进口Driver
您的MyProject.Workers.base
模块Driver
作为全局导入:
from MyProject.utils.drivers import Driver
这是对该类的新的单独引用Driver
.如果你现在修补MyProject.utils.drivers.Driver
,Worker
该类将不会看到修补对象 ; 因为它会使用它自己的全局参考.
修补全球Worker
实际使用情况:
with patch('MyProject.Workers.base.Driver', new=Mock(return_value=999)): task()
看到哪里修补部分的的mock
文档.