gpt4 book ai didi

python - 单元测试时重新加载当前模块

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:49 24 4
gpt4 key购买 nike

运行简单的单元测试时,有时将测试保留在类中会更容易。但是,我不知道如何重新加载当前模块,因此无论何时需要,我都必须将测试移到一个单独的模块中。有解决办法吗?

module: foo
import unittest

class MyObject
...

class MockMyObject
...

class TestMock(unittest.TestCase):

def setUp(self):
MyObject = MockMyObject
mocked = MyObject()

def tearDown(self):
reload(foo) # what goes here?

def testFunction(self):
mocked.do_mocked_function()

if __name__ == "__main__":
unittest.main()

我发现处理这个问题的方法是在 tearDownimport sysreload(sys.modules[__name__])方法,但我想知道是否有更好的方法。

最佳答案

您可以将原始类保存在一个变量中,然后在 tearDown 函数中恢复它。
这是一个例子:

class TestMock(unittest.TestCase):

original = MyObject

def setUp(self):
global MyObject
MyObject = MockMyObject

def tearDown(self):
global MyObject
MyObject = TestMock.original

def testFunction(self):
MyObject().do_mocked_function()

关于python - 单元测试时重新加载当前模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com