BadRequestKey - Тестирование API в приложении Flask - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть эта функция:

def sumIt(a, b):
    return int(a)+int(b);

class digitalNumbers(Resource):
    def get(self, first_number, second_number):
        return {'data': directSum.sumIt(first_number,second_number)}

api.add_resource(digitalNumbers, '/sumtwonumbers/<first_number>/<second_number>')

Это API, который возвращает результат суммы двух чисел, запрошенных в браузере, например: http://localhost:5000/80/80 result: {"data": 160}

Теперь я хочу протестировать его с помощью этого кода:

with app.test_request_context('/sumtwonumbers/80/80'):
    assert flask.request.path == '/sumtwonumbers/80/80'
    assert flask.request.args['sumtwonumbers']['80']['80'] == '{"data": 160}'

Возвращает:

Traceback (most recent call last):
File "app.py", line 22, in <module>
assert flask.request.args['80']['80'] == '{"data": 160}'
File "/home/user/.virtualenvs/test_sum/lib/python3.6/site-packages/werkzeug/datastructures.py", line 431, in __getitem__
raise exceptions.BadRequestKeyError(key)
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.

Если я изменю строку с ошибкой на: assert flask.request.args['sumtwonumbers']['first_number']['second_number'] == '{"data": 160}' или `assert flask.request.args ['first_number'] ['second_number'] == '{"data": 160}'

Ошибка остается прежней, какие-либо идеи?

РЕДАКТИРОВАТЬ

Хорошо, мой тест теперь выглядит так:

with app.test_request_context('/sumtwonumbers/80/80'):
    assert flask.request.path == '/sumtwonumbers/80/80'
    content_type = {'Content-type': 'application/json', 'Accept': 'text/plain'}
    assert flask.request.args(['first_number']['second_number'] == '{"data": 160}', content_type=content_type)

Выдает:

Traceback (most recent call last):
File "app.py", line 23, in <module>
assert flask.request.args(['first_number']['second_number'] == '{"data": 160}', content_type=content_type)
TypeError: list indices must be integers or slices, not str
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...