我正在使用 pybind11 为一些 C++ 代码实现 python 绑定(bind)。现在我正在尝试为绑定(bind)编写单元测试。
有一个class A
在 C++ 中,构造函数如下:
class A
{
A(std::unique_ptr<B> B_ptr);
}
它接受 unique_ptr
到 class B
的对象. class B
是一个可以派生的抽象基类。我已经编写了这样的绑定(bind) class B
可以从 Python 派生。是否可以使用 unittest.mock
创建 Python 模拟?源自 class B
这样A
会在其构造函数中接受模拟吗?
最佳答案
模拟可以有 spec
当定义时,他们借用他们报告的类(以及许多其他基本行为)。所以最简单的方法是这样做:
mymock = Mock(spec=B()) # Mock borrows behaviors of this instance of B, including class
如果您不想使用 spec
(它有许多其他副作用),您可以对报告的类进行有针对性的修改。 Mock
s have an assignable __class__
attribute , 所以这将使一个空白 Mock
将自己报告为 B
的子类:mymock = Mock()
mymock.__class__ = B
关于python - 如何使 Python 模拟从基类派生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63975640/