如何使Python模拟从基类派生?

2024-09-28 03:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pybd11实现一些C++代码的Python绑定。现在我正在尝试为绑定编写单元测试

< C++中有这样的构造函数:{{CD1>}:

class A
{
    A(std::unique_ptr<B> B_ptr);
}

它接受对class B对象的unique_ptrclass B是可以派生的抽象基类。我编写了绑定,使得class B可以从Python派生。使用unittest.mock创建的Python模拟是否可能从class B派生,以便A在其构造函数中接受模拟


Tags: 对象代码单元测试unittest基类mockclassunique
1条回答
网友
1楼 · 发布于 2024-09-28 03:18:25

mock在定义时可以有一个spec,它们从中借用报告的类(以及许多其他基本行为)。因此,最简单的方法是:

mymock = Mock(spec=B())  # Mock borrows behaviors of this instance of B, including class

如果您不想使用spec(它有许多其他副作用),可以对报告的类执行有针对性的修改^{}s have an assignable ^{} attribute,这将生成一个空白的Mock,它将自己报告为B的子类:

mymock = Mock()
mymock.__class__ = B

相关问题 更多 >

    热门问题