MCPcopy Index your code
hub / github.com/python/cpython / test_abstractmethod_integration

Method test_abstractmethod_integration

Lib/test/test_abc.py:171–197  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

169 self.assertRaisesRegex(TypeError, msg, C)
170
171 def test_abstractmethod_integration(self):
172 for abstractthing in [abc.abstractmethod, abc.abstractproperty,
173 abc.abstractclassmethod,
174 abc.abstractstaticmethod]:
175 class C(metaclass=abc_ABCMeta):
176 @abstractthing
177 def foo(self): pass # abstract
178 def bar(self): pass # concrete
179 self.assertEqual(C.__abstractmethods__, {"foo"})
180 self.assertRaises(TypeError, C) # because foo is abstract
181 self.assertTrue(isabstract(C))
182 class D(C):
183 def bar(self): pass # concrete override of concrete
184 self.assertEqual(D.__abstractmethods__, {"foo"})
185 self.assertRaises(TypeError, D) # because foo is still abstract
186 self.assertTrue(isabstract(D))
187 class E(D):
188 def foo(self): pass
189 self.assertEqual(E.__abstractmethods__, set())
190 E() # now foo is concrete, too
191 self.assertFalse(isabstract(E))
192 class F(E):
193 @abstractthing
194 def bar(self): pass # abstract override of concrete
195 self.assertEqual(F.__abstractmethods__, {"bar"})
196 self.assertRaises(TypeError, F) # because bar is abstract now
197 self.assertTrue(isabstract(F))
198
199 def test_descriptors_with_abstractmethod(self):
200 class C(metaclass=abc_ABCMeta):

Callers

nothing calls this directly

Calls 7

isabstractFunction · 0.90
setFunction · 0.85
assertTrueMethod · 0.80
assertFalseMethod · 0.80
EClass · 0.70
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected