我有一个看起来像这样的包裹:
lcl
|
| - lcl
| - LCL.py
| - lunabuild.py
在lunabuild模块中,有一个lunabuild类。Lunabuild类有一个方法Lunabuild.configure_作业(). LCL类导入lunabuild:
^{2}$然后将其用作延迟实例化的属性:
@property
def luna_build(self):
self._luna_build = lunabuild.Lunabuild()
LCL类有一个main()方法,该方法运行Lunabuild.configure_作业()方法:
main(self)
try:
self.luna_build.configure_jobs()
except ValidationError:
...
except Exception, e:
return_code = 2
self.logger_exception(e)
我正在尝试修补configure_jobs,使其具有引发错误的副作用,以便测试未知错误是否按预期记录。在
我一直想不出where to patch。它总是告诉我它无法识别属性,或者lunabuild没有configure\u jobs属性。在
我试过很多不同的选择。在附加了调试器的情况下运行,我可以看到下面代码中的测试lcl.lunabuild.lunabuild对象
更新: 我最近的尝试是
with patch.object('lcl.lunabuild.Lunabuild', 'configure_jobs') as mock:
mock.side_effect = OSError(2, 'message')
retcode = test_lcl.main()
self.assertEquals(retcode, 2)
更简单的方法是在
Lunabuild
类定义中路径configure_jobs
方法的静态引用。所以使用follow代码应该可以满足您的需要如果只想修补测试中使用的对象,可以通过以下方法进行:
^{pr2}$我的口味是在没有其他机会的情况下使用
patch.object
:相关问题 更多 >
编程相关推荐