【发布时间】:2014-10-19 23:37:38
【问题描述】:
我有一个任务
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
【问题讨论】:
-
Driver是模块Worker中的全局变量;您是在修补那个全局还是从哪里导入全局? -
但是如果你正在对
task进行单元测试,你可能只想模拟整个工人.. -
@MartijnPieters 我可以只修补驱动程序。让它这样工作对我来说很重要吗?
-
从测试哲学的角度来看,你会嘲笑 Worker;但如果修补驱动程序更容易,则将其称为集成测试并完成它。 :-)
标签: python unit-testing python-2.7 monkeypatching python-mock