gpt4 book ai didi

python - Python单元测试用例中的类方法

转载 作者:行者123 更新时间:2023-11-28 19:24:42 24 4
gpt4 key购买 nike

我试图在 setUpClass() 方法中模拟一个函数,然后在 tearDownClass() 方法中恢复该函数。

class MyClass(unittest.TestCase):

@classmethod
def setUpClass(cls):

cls.save_func = module.func
module.func = lambda: True

@classmethod
def tearDownClass(cls):

module.func = cls.save_func

tearDownClass() 方法之后,我预计对 module.func() 的调用会调用实际函数。但事实并非如此。

我通过打印函数进行了一些调试。我从 tearDownClass() 方法得到以下输出。

cls.save_func: <unbound method MyClass.save_func>
module.func: <unbound method MyClass.save_func>

我尝试了不同的方法,并将方法从类方法更改为设置方法:

     def setUp(cls):

cls.save_func = module.func
module.func = lambda: True


def tearDown(cls):

module.func = cls.save_func

令我惊讶的是,一切似乎都正常。 module.func 恢复回来,当我打印它时,它给了我函数地址。

module.func <function func at 0x89f9a74>

你能解释一下这个行为吗?

最佳答案

因为 setUp 不是“静态”classmethod,所以它需要类的实例。

引用:unittest basic example

关于python - Python单元测试用例中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052109/

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