示例#1
0
    def test_extract_invalid_keys(self):
        self.assertEqual(
            extract_subdict(self.test_dict, ['name', 'invalid']),
            {'name': 'Sherlock Holmes'}
        )

        with self.assertRaises(KeyError) as cm:
            extract_subdict(self.test_dict, ['name', 'invalid'], strict=True)
        self.assertEqual(
            cm.exception.args[0] if PYTHON3 else cm.exception.message,
            'invalid'
        )
示例#2
0
    def test_extract_valid_keys(self):
        self.assertEqual(extract_subdict(self.test_dict), self.test_dict)

        self.assertEqual(
            extract_subdict(self.test_dict, ['name', 'books']),
            {
                'name': 'Sherlock Holmes',
                'books': [
                    'A Study in Scarlet', 'The Sign of the Four',
                    'The Adventures of Sherlock Holmes'
                ]
            }
        )

        self.assertEqual(
            extract_subdict(self.test_dict, ['name', 'address']),
            {
                'name': 'Sherlock Holmes',
                'address': {
                    'street': {'type': 'Street', 'name': 'Baker'},
                    'number': '221B', 'city': 'London', 'country': 'England',
                },
            }
        )

        self.assertEqual(
            extract_subdict(self.test_dict, ['name', 'address.street',
                                             'address.country']),
            {
                'name': 'Sherlock Holmes',
                'address': {
                    'street': {'type': 'Street', 'name': 'Baker'},
                    'country': 'England',
                },
            }
        )

        self.assertEqual(
            extract_subdict(self.test_dict, ['name', 'address.street.type',
                                             'address.city']),
            {
                'name': 'Sherlock Holmes',
                'address': {'street': {'type': 'Street'}, 'city': 'London'},
            }
        )