import unittest
from abc import ABCMeta, abstractproperty
[docs]class MyABC(metaclass=ABCMeta):
@abstractproperty
def propA(self):
pass
[docs]class MyMixin(metaclass=ABCMeta):
@abstractproperty
def propB(self):
pass
[docs]class MyClassNoPropA(MyABC, MyMixin):
@property
def propB(self):
return "b"
[docs]class MyClassNoPropB(MyABC, MyMixin):
@property
def propA(self):
return "a"
[docs]class MyClass(MyABC, MyMixin):
@property
def propA(self):
return "a"
@property
def propB(self):
return "b"
[docs]class PluginLogicEntryHookInheritenceTest(unittest.TestCase):
[docs] def testPropANotImplemeneted(self):
self.assertRaises(TypeError, lambda: MyClassNoPropA())
[docs] def testPropBNotImplemeneted(self):
self.assertRaises(TypeError, lambda: MyClassNoPropB())
[docs] def testIsInstance(self):
myClass = MyClass()
self.assertTrue(isinstance(myClass, MyABC))
self.assertTrue(isinstance(myClass, MyMixin))