如何使Python mock从基类派生



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

C++中有一个class A,其构造函数如下:

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

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

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

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

如果您不想使用spec(它有许多其他副作用(,可以对报告的类执行有针对性的修改。Mock具有可分配的__class__属性,因此这将使原本为空的Mock报告为B:的子类

mymock = Mock()
mymock.__class__ = B

最新更新