能否在pytest中一次性Mock多个指定模块及子模块?
可以合并为一行操作
当然可以把这些Mock操作合并成一行,用sys.modules.update()配合字典推导式就能实现:
sys.modules.update({mod: MagicMock() for mod in ['common.util', 'common.shared.utils', 'common.public.utils']})
原理很简单:字典推导式生成一个键为模块名、值为MagicMock()实例的字典,sys.modules.update()方法会把这个字典里的键值对批量更新到系统模块字典中,一次性完成三个模块的Mock替换。
你也可以用一行for循环实现,写法更直白:
for mod in ['common.util', 'common.shared.utils', 'common.public.utils']: sys.modules[mod] = MagicMock()
注意要提前导入依赖:
import sys from unittest.mock import MagicMock
内容的提问来源于stack exchange,提问作者Jayleen
相关产品推荐
相关产品推荐

