📅  最后修改于: 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/。
参考资料: