Как правильно протестировать приложение с расширением REST API + Flask JWT? - PullRequest
0 голосов
/ 24 апреля 2019

Предполагая, что у меня есть конечная точка API, чьи ресурсы доступны только авторизованным пользователям, имеющим действительный токен доступа, аналогично следующему:

from flask_restful import Resource
from flask_jwt_extended import jwt_required

class Collection(Resource):

    @jwt_required
    def get(self):
        """
        GET response implementation here.
        """
        # Queries and logic here
        data = 10
        if(is_everythig_ok()):
            return {"data": data}, 200
        else:
            return {"message":"Failed to get data."}, 400

И если предположить, что существует конечная точка LoginUser, которая возвращает действительный токен access_token, как я могу написать некоторые модульные тесты для воспроизведения двух кодов состояния (200 для успеха и 400 для отказа), в то время как у пользователя есть действительный токен доступа И также случай когда пользователь НЕ имеет действительного access_token.

Я проверил свои конечные точки с помощью POSTMAN, и, похоже, все в порядке, но мне также нужно написать несколько тестов для проверки. Итак, как правильно это сделать?

1 Ответ

3 голосов
/ 24 апреля 2019

Поскольку это API, вам действительно нужны интеграционные тесты.То, как я это делаю, выглядит следующим образом:

  1. создать тестового пользователя
  2. запросить действительный токен
  3. получить доступ к защищенному ресурсу с действительным токеном
  4. доступ к ресурсу с неверным токеном
  5. любые другие тесты, обеспечивающие охват каждого метода в каждом контроллере.
  6. удаление тестового пользователя

Вы будетеВ итоге вы получите множество интеграционных тестов, которые вы можете автоматизировать, почтальон отлично справляется с этой задачей, вы можете создавать коллекции для каждой конечной точки и легко их запускать.

Более того, вы можете начать измерять время выполнения каждого запроса и начать смотреть на те, которые занимают слишком много времени.

Модульное тестирование логики внутри ваших методов, но не вашей авторизациисистема, а не ваши конечные точки и не ваши контроллеры.Те, у вас интеграционный тест.

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