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

Method test_missing

Lib/test/test_userdict.py:196–243  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

194 self.assertRaises(TypeError, collections.UserDict.update)
195
196 def test_missing(self):
197 # Make sure UserDict doesn't have a __missing__ method
198 self.assertNotHasAttr(collections.UserDict, "__missing__")
199 # Test several cases:
200 # (D) subclass defines __missing__ method returning a value
201 # (E) subclass defines __missing__ method raising RuntimeError
202 # (F) subclass sets __missing__ instance variable (no effect)
203 # (G) subclass doesn't define __missing__ at all
204 class D(collections.UserDict):
205 def __missing__(self, key):
206 return 42
207 d = D({1: 2, 3: 4})
208 self.assertEqual(d[1], 2)
209 self.assertEqual(d[3], 4)
210 self.assertNotIn(2, d)
211 self.assertNotIn(2, d.keys())
212 self.assertEqual(d[2], 42)
213 class E(collections.UserDict):
214 def __missing__(self, key):
215 raise RuntimeError(key)
216 e = E()
217 try:
218 e[42]
219 except RuntimeError as err:
220 self.assertEqual(err.args, (42,))
221 else:
222 self.fail("e[42] didn't raise RuntimeError")
223 class F(collections.UserDict):
224 def __init__(self):
225 # An instance variable __missing__ should have no effect
226 self.__missing__ = lambda key: None
227 collections.UserDict.__init__(self)
228 f = F()
229 try:
230 f[42]
231 except KeyError as err:
232 self.assertEqual(err.args, (42,))
233 else:
234 self.fail("f[42] didn't raise KeyError")
235 class G(collections.UserDict):
236 pass
237 g = G()
238 try:
239 g[42]
240 except KeyError as err:
241 self.assertEqual(err.args, (42,))
242 else:
243 self.fail("g[42] didn't raise KeyError")
244
245 test_repr_deep = mapping_tests.TestHashMappingProtocol.test_repr_deep
246

Callers

nothing calls this directly

Calls 9

keysMethod · 0.95
assertNotHasAttrMethod · 0.80
assertNotInMethod · 0.80
DClass · 0.70
EClass · 0.70
FClass · 0.70
GClass · 0.70
assertEqualMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected