2016-01-27 3 views
0

У меня есть API-интерфейс python, и ответ сервера приходит ко мне как вывод JSON.утверждать ответ JSON

Как я могу утверждать, что «статус» из этого вывода является 0, например:

def test_case_connection(): 
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars) 
    assert req["status"]="0" 

является то, что я пробовал.

Ответ выглядит как:

{"status" : 0, ......} 

ошибка я получил это:

TypeError: 'Response' object has no attribute '__getitem__' 

ответ

3

Если вам нужно просто проверить, что запрос был успешным, используя request.status_code будет делать трюк:

def test_case_connection(): 
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars) 
    assert req.status_code == 200 

Если вы хотите, вместо того, чтобы проверить наличие пФ конкретную пару ключ-значение в ответе, вам необходимо конвертировать полезную нагрузку ответа от JSON в Словаре:

import json 

def test_case_connection(): 
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars) 
    data = json.loads(req.content) 
    assert data["status"] == "0" 

Если вы используете библиотеку запросов, вы можете избежать преобразования JSON вручную с помощью его builtin json decoder.

+0

data = json.loads (req.content) assert data ["status"] == 0 этот трюк. Огромное спасибо!!! Мне нужно проверить конкретное значение, так как у меня будет более 30 из них, и каждый раз, когда мне нужно проверить, что у вас плохой, большинство из них совершенно не успешны. –

0

Это должно быть assert req['status'] == 0, я. е. сравнение (==) вместо присваивания (=) и 0 как целое число не "0" как строка (не совсем уверена в последних).

+0

assert req ['status'] == 0 E TypeError: объект 'Response' не имеет атрибута '__getitem__' –

+0

@GeorgeG. правильно, забыл, что вам нужно извлечь json first – Vleseg

Смежные вопросы