Тест колбы: preprocess_request (), dispatch_request () - PullRequest
2 голосов
/ 29 июня 2019

Моя среда:

Python3.7
Колба == 1.0.2
pytest == 4.3.1

Я искал метод для извлечения как объекта запроса, так и объекта ответа в функции pytest. А потом я встретил этот фрагмент кода.

http://flask.pocoo.org/snippets/58/

и ниже это то, что я сделал.

def test_busking(session, monkeypatch, report=Report()):

    with app.test_request_context('/busking/zones'):
        # call the before funcs
        rv = app.preprocess_request()
        if rv != None:
            response = app.make_response(rv)
        else:
            # do the main dispatch
            rv = app.dispatch_request()
            response = app.make_response(rv)

            # now do the after funcs
            response = app.process_response(response)

        assert flask.request
        assert response

Это хорошо работает в моей среде. Я смог получить оба объекта. Какие у меня вопросы ...

  • dispatch_request () вызывается, когда только rv is None. почему нет, когда rv - это что-то еще?

  • process_response () также вызывается, когда rv is None почему это так?

  • он выглядит как preprocess_request (), вызывает before_request_funcs, а rv - это возвращаемое значение последнего before_request_function ... похоже, что rv не имеет ничего общего с диспетчерским запросом, но я знаю, что это должно быть что-то ... скажи мне, в чем я не прав.

Есть еще куча вещей, которых я не понимаю в preprocess_request (), make_response (), dispatch_request (), process_response (). Я думаю, что rv и process_request () играют отличные роли, но я не уверен. Я был бы более чем признателен, если бы вы также объяснили, что происходит на фоне.

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