【发布时间】:2018-06-06 09:32:57
【问题描述】:
我有一个包,它的依赖项不是pip 可安装的。为了能够构建文档,我正在尝试使用MagicMock 模拟不可安装的包。
但是我偶然发现了多重继承的问题:当其中一个父类是模拟类时,我得到:
TypeError:元类冲突:派生类的元类必须是元类的(非严格)子类
下面的例子说明了这个问题:
文件:class_a.py
class A:
pass
文件:code.py
from class_a import A
class B:
pass
class C(A, B):
pass
文件:test.py
import sys
from unittest import mock
# inspired by https://stackoverflow.com/a/37363830/1860757
MOCK_MODULES = ['class_a', ]
sys.modules.update((mod_name, mock.MagicMock()) for mod_name in MOCK_MODULES)
import code
code.C()
如果我运行python3 test.py,我会得到上述异常。
如果我注释以sys.modules.update 开头的行,则一切正常。
有没有办法模拟模块或类以使多重继承继续工作?
【问题讨论】:
标签: python-3.x unit-testing mocking