简介
在本实验中,你将学习如何使用 pytest
框架测试 Flask 应用程序。测试是软件开发过程中的重要组成部分,因为它有助于确保应用程序的正确性和可靠性。Flask 提供了测试实用工具,便于为应用程序的不同部分编写测试。
注意:你需要自行创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 Flask 服务状态。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,你将学习如何使用 pytest
框架测试 Flask 应用程序。测试是软件开发过程中的重要组成部分,因为它有助于确保应用程序的正确性和可靠性。Flask 提供了测试实用工具,便于为应用程序的不同部分编写测试。
注意:你需要自行创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 Flask 服务状态。
在开始为 Flask 应用程序编写测试之前,你需要设置测试环境。以下是设置步骤:
通过运行以下命令安装 pytest
框架:
pip install pytest
在 Flask 应用程序的 tests
文件夹中创建一个名为 conftest.py
的新文件。
在 conftest.py
文件中,导入必要的模块:
import pytest
from my_app import create_app
定义一个名为 app
的 fixture,用于创建和配置应用程序实例:
@pytest.fixture()
def app():
app = create_app()
app.config.update({
"TESTING": True,
})
yield app
注意,如果你使用的是应用程序工厂模式,应相应地修改 fixture。
为测试客户端和 CLI 运行器定义 fixture:
@pytest.fixture()
def client(app):
return app.test_client()
@pytest.fixture()
def runner(app):
return app.test_cli_runner()
既然你已经设置好了测试环境,就可以开始为你的 Flask 应用程序编写测试了。以下是一些你可能想要编写的常见测试示例:
测试一个路由:
def test_hello(client):
response = client.get("/")
assert response.status_code == 200
assert b"Hello, World!" in response.data
此测试向根路由(“/”)发送一个 GET 请求,并检查响应状态码是否为 200,以及响应数据中是否包含字符串“Hello, World!”。
测试一个 POST 请求:
def test_login(client):
response = client.post("/login", data={"username": "test", "password": "pass"})
assert response.status_code == 200
assert b"Logged in successfully" in response.data
此测试向登录路由(“/login”)发送一个包含用户名和密码的表单数据的 POST 请求。它检查响应状态码是否为 200,以及响应数据中是否包含字符串“Logged in successfully”。
测试一个命令:
def test_hello_command(runner):
result = runner.invoke(args=["hello"])
assert result.exit_code == 0
assert "Hello, World!" in result.output
此测试调用一个名为“hello”的命令,并检查该命令是否以代码 0 退出,以及输出中是否包含字符串“Hello, World!”。
要运行测试,请在终端中导航到 Flask 应用程序的根文件夹,并运行以下命令:
pytest
此命令将发现并运行 tests
文件夹中的所有测试。你应该会在终端输出中看到测试结果。
在本实验中,你学习了如何使用 pytest
框架测试 Flask 应用程序。你设置了测试环境,为应用程序的不同部分编写了测试,并运行测试以验证代码的正确性。测试是软件开发过程的重要组成部分,为你的 Flask 应用程序编写测试将有助于确保其可靠性和稳定性。