gpt4 book ai didi

python - 测试后销毁 Python 中的模拟

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

假设我有几个这样的测试:

class TestMyTest(unittest.TestCase):

def SetUpClass(cls):
cls.my_lib = MyLib()

def my_first_test(self):
self.my_lib.my_function = Mock(return_value=True)
self.assertTrue(self.my_lib.run_my_function(), 'my function failed')

def my_second_test(self):
# Some other test that calls self.my_lib.my_function...

假设我在 MyLib 中有这样的东西:

class MyLib(Object):

def my_function(self):
# This function does a whole bunch of stuff using an external API
# ...

def run_my_function(self):
result = self.my_function()
# Does some more stuff
# ...

在 my_first_test 中,我正在模拟 my_lib.my_function 并在函数执行时返回 True。在这个例子中,我的断言是调用 run_my_function(),这是同一个库中的另一个函数,除其他外,它调用 my_lib.my_function。但是当执行 my_second_test 时,我不希望调用模拟函数,而是调用真实函数。所以我想我需要在运行 my_first_test 之后以某种方式销毁模拟,也许是在 tearDown() 期间。我该如何销毁那个模拟?

我编辑了我的原始问题以添加更多详细信息,因为看起来不太清楚,对此感到抱歉。

最佳答案

你可以这样做:

class TestYourLib(unittest.TestCase):

def setUp(self):
self.my_lib = MyLib()

def test_my_first_test(self):
self.my_lib.my_function = Mock(return_value=True)
self.assertTrue(self.run_my_function(), 'my function failed')

def test_my_second_test(self):
# Some other test that calls self.my_lib.my_function...

然后,当 setUp 为下一个测试用例调用时,Mock 被“销毁”,超出范围。

关于python - 测试后销毁 Python 中的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24248054/

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