Python重装模块

时间:2013-06-19 17:36:23

标签: python testing

我正在使用python的unittest框架为python模块module编写单元测试。

此模块在加载时使用json文件执行一些“预处理”,因此它具有以下内容: 可以访问和使用的module.info['xyz']

为此编写测试时,我想在每次测试之前重新加载模块,以便在开始当前测试之前,对于每个测试,字典module.info的旧键不再存在。

现在我在reload(module)中有一个setUp(),但似乎没有做到这一点。我将test_A引入的旧密钥放在test_Btest_C之后执行的其他测试中。

我想知道是否有办法实现我想要实现的目标,或者您是否可以向我指出那些无法完成的文档。

1 个答案:

答案 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