我正在尝试对一个继承类进行单元测试,该类的基类实现了__init_subclass__
方法。代码如下:
quick_test.py
import unittest
from unittest.mock import create_autospec
class Parent():
PROPERTY = NotImplemented
def __init_subclass__(cls, **kwargs):
if cls.PROPERTY is NotImplemented:
raise NotImplementedError("Please implement the `PROPERTY`.")
super().__init_subclass__(**kwargs)
def __init__(self, connection_type="default"):
self.connection_type = connection_type
class Child(Parent):
PROPERTY = "has value"
class ChildNoProp(Parent):
pass
class TestClass(unittest.TestCase):
def test_required_params(self):
mock = create_autospec(Child)
self.assertRaises(NotImplementedError, mock)
if __name__ == '__main__':
unittest.main()
问题在于,我甚至无法到达测试用例,因为
ChildNoProp
的定义调用了基类中的__init_subclass__
并引发了异常。是否有一种方法可以使用当前实现进行单元测试,或者应该放弃在
__init_subclass__
中引发错误?
ChildNoProp
的定义放在测试内部。 - Mad Physicist