小编R. *_*Jin的帖子

使用应用程序工厂时在 pytest 测试中访问 Flask 测试客户端会话

我正在尝试使用 pytest 和应用程序工厂对应用程序进行单元测试,但我似乎无法在我的测试中访问客户端会话对象。我确定有一些我不会在某处推动的上下文。我在我的“应用程序”装置中推送应用程序上下文。我应该将请求上下文推送到某个地方吗?

下面是一个 MWE。

mwe.py:

from flask import Flask, session


def create_app():
    app = Flask(__name__)
    app.secret_key = 'top secret'

    @app.route('/set')
    def session_set():
        session['key'] = 'value'
        return 'Set'

    @app.route('/check')
    def session_check():
        return str('key' in session)

    @app.route('/clear')
    def session_clear():
        session.pop('key', None)
        return 'Cleared'

    return app


if __name__ == "__main__":
    mwe = create_app()
    mwe.run()
Run Code Online (Sandbox Code Playgroud)

conftest.py:

import pytest
from mwe import create_app


@pytest.fixture(scope='session')
def app(request):
    app = create_app()

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

    def teardown():
        ctx.pop()

    request.addfinalizer(teardown)
    return app


@pytest.fixture(scope='function')
def client(app):
    return app.test_client() …
Run Code Online (Sandbox Code Playgroud)

python unit-testing fixtures pytest flask

5
推荐指数
1
解决办法
6295
查看次数

标签 统计

fixtures ×1

flask ×1

pytest ×1

python ×1

unit-testing ×1