【发布时间】:2013-05-20 12:39:14
【问题描述】:
作为一个单元测试,我希望能够以编程方式测试在一堆 GUI 屏幕中定义的导入是否有意义。我不想执行任何操作,只是
import main_screen
并查看在导入链中是否有任何问题。我已经使用 sys.modules 技巧了:
import my_fake_module
sys.modules['module_i_want_to_fake'] = my_fake_module
效果很好,直到有什么效果:
from module_i_want_to_fake import real_attribute
然后我当然会得到一个 ImportError,除非我向 my_fake_module 添加一个存根的方法/类,但是有太多的方法无法实现。
有什么方法可以挂钩来自 my_fake_module 的导入,以便它们始终成功?同样,他们不需要做任何事情。我敢打赌有一个简单的方法,但它现在正在逃避我......
【问题讨论】:
-
我不确定您所说的
anything falls over´ but doesmymod = __import__("module_name")` 是什么意思?你可以打电话给reload(mymod),你可以对变量进行测试吗?您还可以自己修改__import__函数/方法,并进行回退和错误处理,甚至动态创建虚拟函数/存根。 -
“任何东西都掉了”我只是说看看是否有损坏的引用、错别字等,但我可能会扩展它以查找孤儿和其他一些分析。是的,覆盖
__import__听起来不错,但到目前为止我无法弄清楚或用谷歌搜索它。也许我需要通过创建一个新的导入器来做 PEP302 的事情。
标签: python unit-testing python-2.7