Skip to main content
 首页 » 编程设计

python之如何在 Python 中模拟一个类

2025年05月04日12zhengyun_ustc

我是 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()