在对该主题进行了数十次研究和大量思考之后,我将其留给您一个新的问题:是否可以使用Python模拟整个库?我想导入该库及其所有包/模块/等,而不必通过模拟和sys.module ... :(
就我而言,我使用的是特定于该工作的库,并且我希望能够在家中处理不依赖于该库的代码,而不必重新编码导入的代码。
例:
"""Main file.
I define the mock here.
"""
mocked = MagicLibraryMock("mylib") # the dream
"""File with lib imports.
I can import anything and use it as a mock.
"""
import mylib
from mylib.a import b
from mylib.z import c
from mylib.a.e.r import x
foo = x()
bar = c.a.e.r.t.d()
bar.side_effect = [1, 2, 3]
bar()
我试图集成从字典继承的类以重载的__getitem__
方法sys.modules
。但问题是,进口方法也使用__iter__
,并且有它变得更加复杂一个返回MagicMock
根据该结果,知道它是不建议直接修改导入源代码-源。
最终,我减少了将时间从我的应用程序提取到子模块中的时间,这些时间将用于解决这些问题。因此,我可以更轻松地拦截这些导入,而不会弄脏我的代码。
设计更有趣。
谢谢你的帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句