Flask Test CLI Runner API
FlaskCliRunner 基于 Click 的 CliRunner,用于测试 Flask CLI 命令。
通过 app.test_cli_runner() 创建实例。
创建方式
| 方式 | 说明 |
|---|---|
| app.test_cli_runner(**kwargs) | 创建 CLI 测试运行器。kwargs 传递给 CliRunner 构造函数 |
核心方法
| 方法 | 说明 |
|---|---|
| invoke(cli=None, args=None, **kwargs) | 调用 CLI 命令。默认使用 app.cli。返回 click.testing.Result 对象 |
Result 对象属性
| 属性 | 说明 |
|---|---|
| exit_code | 命令退出码。0 表示成功 |
| output | 命令的标准输出内容(str) |
| exception | 如果命令抛出异常,此处包含异常对象 |
代码示例
实例
from app import create_app
app = create_app()
runner = app.test_cli_runner()
# 测试内置命令
result = runner.invoke(args=["routes"])
assert result.exit_code == 0
assert "/api/posts" in result.output
# 测试自定义命令
result = runner.invoke(args=["init-db"])
assert result.exit_code == 0
# 测试带参数的命令
result = runner.invoke(args=["greet", "--name", "RUNOOB"])
assert "RUNOOB" in result.output
# 直接用 invoke 测试应用 CLI 组
result = runner.invoke(app.cli, ["run", "--help"])
assert result.exit_code == 0
app = create_app()
runner = app.test_cli_runner()
# 测试内置命令
result = runner.invoke(args=["routes"])
assert result.exit_code == 0
assert "/api/posts" in result.output
# 测试自定义命令
result = runner.invoke(args=["init-db"])
assert result.exit_code == 0
# 测试带参数的命令
result = runner.invoke(args=["greet", "--name", "RUNOOB"])
assert "RUNOOB" in result.output
# 直接用 invoke 测试应用 CLI 组
result = runner.invoke(app.cli, ["run", "--help"])
assert result.exit_code == 0
