Проверка юнитов на входном файле JSON, проверка правильности структуры - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу написать unittest, который проверяет структуру файла JSON. Могу ли я написать фиктивный тест, который проверяет, что входные данные JSON содержат несколько вложенных словарей внутри? Это пример файла JSON:

{"Target_group_queries": {
"tvchview":{
             "name":"tvview",
             "description":"something",
             "sql":"SELECT DISTINCT pnr, channel AS value FROM $source WHERE channel IN ( $channel )"
               }}}

Unittest должен проверить, имеет ли вход «Target_group_queries» в качестве первого ключа, значение другого словаря и внутри другого словаря. Мне все равно, что внутри него, просто нужно вложить словарь, кроме "Target_group_queries". Нечто похожее на isinstance() функцию, но с использованием утверждений или, если возможно, каким-то образом смоделировать ввод. Это то, что у меня есть:

def test_open_json_file(self):
    import json
    from unittest import mock
    # test valid JSON
    read_data = json.dumps({'Target_group_queries':{'tvview':{'name':'tvchview','description':'something','sql':'SELECT DISTINCT pnr, channel AS value FROM $source WHERE channel IN ( $channel )'}}})
    mock_open = mock.mock_open(read_data=read_data)
    with mock.patch('__builtin__.open', mock_open):
        result = load_json()
    self.assertEqual({'a': 1, 'b': 2, 'c': 3}, result)
    # test invalid JSON
    read_data = ''
    mock_open = mock.mock_open(read_data=read_data)
    with mock.patch("__builtin__.open", mock_open):
        with self.assertRaises(ValueError) as context:
            load_json()
        self.assertEqual(
            'filename is not valid JSON.', str(context.exception))

Я хочу, чтобы функция выглядела примерно так - тестирование неправильного ввода и тестирование правильного ввода. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...