我正在使用python的unittest框架为python模块module
编写单元测试。
此模块在加载时使用json文件执行一些“预处理”,因此它具有以下内容:
可以访问和使用的module.info['xyz']
。
为此编写测试时,我想在每次测试之前重新加载模块,以便在开始当前测试之前,对于每个测试,字典module.info
的旧键不再存在。
现在我在reload(module)
中有一个setUp()
,但似乎没有做到这一点。我将test_A
引入的旧密钥放在test_B
和test_C
之后执行的其他测试中。
我想知道是否有办法实现我想要实现的目标,或者您是否可以向我指出那些无法完成的文档。
答案 0 :(得分:2)
从sys.modules
词典手动删除模块似乎对我有用。
import sys
import unittest
import myModule
class MyTest( unittest.TestCase ):
def setUp( self ):
global myModule
myModule = __import__( 'path.to.myModule', globals(), locals(), [''], -1 )
return
def tearDown( self ):
global myModule
del sys.modules[myModule.__name__]
return