Подтвердить что ты не робот

Тестирование кода, для которого требуется приложение Flask или контекст запроса

Я получаю working outside of request context при попытке получить доступ к session в тесте. Как настроить контекст, когда я тестирую что-то требующее?

import unittest
from flask import Flask, session

app = Flask(__name__)

@app.route('/')
def hello_world():
    t = Test()
    hello = t.hello()
    return hello

class Test:
    def hello(self):
        session['h'] = 'hello'
        return session['h']

class MyUnitTest(unittest.TestCase):
    def test_unit(self):
        t = tests.Test()
        t.hello()
4b9b3361

Ответ 1

Если вы хотите сделать запрос к вашему приложению, используйте test_client.

c = app.test_client()
response = c.get('/test/url')
# test response

Если вы хотите протестировать код, который использует контекст приложения (current_app, g, url_for), нажмите app_context.

with app.app_context():
    # test your app context code

Если вам нужен тестовый код, который использует контекст запроса (request, session), нажмите test_request_context.

with current_app.test_request_context():
    # test your request context code

Оба контекста приложения и запроса также могут быть перенесены вручную, что полезно при использовании интерпретатора.

>>> ctx = app.app_context()
>>> ctx.push()

Flask- Script или новый Flask cli автоматически будет использовать контекст приложения при запуске команды shell.


Flask-Testing - полезная библиотека, содержащая помощники для тестирования приложений Flask.