Python重装模块

ffl*_*ing 5 python testing

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

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

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

现在我有一个reload(module)setUp()但这似乎并没有做的伎俩.我有罗纳尔多,也很想通过引进旧密钥test_A在其他测试,如test_Btest_C那些后执行.

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

Chr*_*erC 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
Run Code Online (Sandbox Code Playgroud)