Python 重新导入测试中的模块以丢失上下文

Python 重新导入测试中的模块以丢失上下文,python,unit-testing,import,python-module,Python,Unit Testing,Import,Python Module,许多Python模块在不定义类的情况下保持内部状态,例如,logging通过getLogger()维护几个可访问的记录器 如何测试这样一个模块?使用标准工具,我希望测试用例类中的各种测试能够重新导入正在测试的模块,以便每次它丢失上下文时都能重新导入。可以这样做吗?这将为您重新导入新模块: import sys del sys.modules['my_module'] import my_module %test.py test.test\u日志记录通过: test_logging (__mai

许多Python模块在不定义类的情况下保持内部状态,例如,
logging
通过
getLogger()
维护几个可访问的记录器


如何测试这样一个模块?
使用标准工具,我希望
测试用例
类中的各种测试能够重新导入正在测试的模块,以便每次它丢失上下文时都能重新导入。可以这样做吗?

这将为您重新导入新模块:

import sys
del sys.modules['my_module']
import my_module
%test.py test.test\u日志记录
通过:

test_logging (__main__.Test) ... ok
但是
%test.py测试。测试记录2
不:

test_logging2 (__main__.Test) ... ERROR

由于
日志记录的内部状态已被重置。

我想你的意思是
del sys.modules['my_module']
除了重新导入模块之外,在某些情况下可能需要重新导入模块,如果要重置的状态很好地包含在模块的一个或几个属性中,您只需使用
mock.patch
模拟它们,模拟将被替换为其他测试。
test_logging2 (__main__.Test) ... ERROR