gpt4 book ai didi

python - 在运行时向 python 添加模块

转载 作者:行者123 更新时间:2023-12-01 05:35:21 24 4
gpt4 key购买 nike

我有一个 python 脚本,它在脚本的开头执行此操作:

def initialize(module_name):
return importlib.import_module(module_name) # import module from string

我想编写一个“模拟”模块名称的测试,如下所示:

def test():
# assemble module at run time
module_obj = {'name': Object, 'another_name': AnotherObject}

# inject to the "import system"
inject_mock_module('mymodule', module_obj)

# assert that the import went correctly
assert my_module_mock == initialize('mymodule')

我该怎么做?首先,具体来说,如何创建 module_obj 以及如何定义 inject_mock_module?这需要在 2.7+ 和 3.3+ 中工作

最佳答案

使用mock library模拟 import_module() 函数。从 Python 3.3 开始,您可以将该模块导入为 unittest.mock :

try:
# Python 3.3+
from unittest.mock import patch
except ImportError:
# External dependency
from mock import patch

def test():
module_obj = {'name': Object, 'another_name': AnotherObject}

with patch('importlib.import_module', new=module_obj.get):
assert initialize('name') is module_obj['name']

关于python - 在运行时向 python 添加模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19201122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com