我正在使用pybind11为一些C++代码实现python绑定。现在我正在尝试为绑定编写单元测试。
C++中有一个class A
,其构造函数如下:
class A
{
A(std::unique_ptr<B> B_ptr);
}
它接受unique_ptr
到class 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