gpt4 book ai didi

python - 如何在 Python 中模拟一个类?

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

我是 Python 的新手,但我曾经使用过 ruby​​。

我正在尝试使用 Python 进行一些测试,但我不知道如何为我的测试模拟一个类。

假设我有这个真正的类(class):

from database import DB
class Foo:
def do_it(self):
x = {'key': 'value'}
DB.save(x)
# do other stuff with x
return x

现在,我想测试我对 x 所做的一切是否返回正确的结果,我想测试是否使用 x 作为参数调用了 DB.save,但我不想实际将 x 保存到数据库。要查看是否正在调用 DB.save,我可以使用一些模拟框架,但我如何告诉 Foo 类我需要它来使用模拟对象而不是真正的 DB 对象?

谢谢。

编辑:抱歉,我的示例不足以满足我需要完成的任务。

让我们看看这个新例子:

from database import DB
class Foo:
DB.connect()
def do_it(self):
x = {'key': 'value'}
DB.save(x)
# do other stuff with x
return x

例如,假设数据库已关闭。

当我导入 Foo 时,它引发了连接错误,我没有时间模拟数据库。

我该怎么办??

最佳答案

答案是,不要那样写你的类。无论如何,这是一种奇怪的方式——除了属性和方法定义之外,在类级别实际上不应该有任何可执行代码。您应该在 __init__ 方法中设置连接。

class Foo(object):
def __init__(self, *args, **kwargs):
DB.connect()

关于python - 如何在 Python 中模拟一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622980/

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