У меня есть эта функция:
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