6

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

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

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

现在我有一个reload(module)setUp()但这似乎并没有起到作用。我会在其他测试中引入旧密钥,test_A例如在它test_B之后test_C执行的。

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

4

1 回答 1

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
于 2014-05-22T02:56:54.543 回答