📌  相关文章
📜  pytest 运行时错误:未找到应用程序.在视图函数中工作或推送应用程序上下文 - Python (1)

📅  最后修改于: 2023-12-03 15:18:51.641000             🧑  作者: Mango

pytest 运行时错误:未找到应用程序

在使用 pytest 进行测试时,可能会遇到以下错误:

RuntimeError: Working outside of application context.

这是因为在测试期间,没有正确地推送应用程序上下文。为了解决这个问题,我们需要在测试文件中使用 pytest.fixture,并在每个测试函数中使用依赖注入。

具体来说,我们需要创建一个名为 app 的应用程序 fixture,然后将其注入到测试函数中。在一个测试函数中,我们可以使用 with 语句将应用程序上下文推送到当前的环境中。

下面是一个例子:

# content of test_app.py
import pytest
from myapp import create_app

@pytest.fixture
def app():
    app = create_app()
    return app

def test_home_page(app):
    with app.test_client() as client:
        response = client.get('/')
        assert response.status_code == 200

在上面的代码中,我们首先定义了一个名为 app 的 fixture。该 fixture 使用 create_app() 函数创建应用程序,并返回该应用程序实例。

test_home_page 函数中,我们将 app 参数传递给该函数,并使用 with 语句推送应用程序上下文。我们使用 Flask 内置的测试客户端来测试应用程序的响应。

注意,在 test_home_page 中我们没有使用依赖注入来访问应用程序。相反,我们将应用程序作为一个参数传递给函数,并在函数中使用该参数来测试应用程序。

关于使用 pytest 进行测试的更多信息,请参考官方文档:https://docs.pytest.org/en/latest/。

参考资料:

  • https://flask.palletsprojects.com/en/1.1.x/testing/
  • https://docs.pytest.org/en/latest/fixture.html