欢迎访问宙启技术站
智能推送

CliRunner()模块详解及使用示例

发布时间:2023-12-24 06:00:45

CliRunner()click库中的一个类,用于测试基于命令行的应用程序。它提供了一个方便的接口来运行命令并检查结果。

在使用CliRunner()之前,需要先安装click库,可以使用以下命令进行安装:

pip install click

CliRunner()提供了以下主要方法来运行命令和获取结果:

- invoke():运行一个命令并返回Result对象。

- invoke_cli():运行一个命令,返回的结果是一个元组,包含stdoutstderrexit_code

- isolated_filesystem():创建一个临时目录,并在此目录中运行命令。

- mktemp(): 创建一个临时文件。

- make_env(): 创建一个字典形式的环境变量。

下面是一个使用CliRunner()的示例:

import click


@click.command()
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(name):
    click.echo(f'Hello {name}!')


if __name__ == '__main__':
    hello()

在上面的示例中,我们定义了一个简单的命令行应用程序hello,它将提示用户输入姓名,并打印出Hello {name}!的输出。

接下来,我们使用CliRunner()来测试这个应用程序,如下所示:

from click.testing import CliRunner


def test_hello():
    runner = CliRunner()
    result = runner.invoke(hello, input='Alice
')
    assert result.exit_code == 0
    assert result.output == 'Your name: Alice
Hello Alice!
'


if __name__ == '__main__':
    test_hello()

在这个测试函数中,我们首先创建了一个CliRunner()实例,然后使用invoke()方法运行了hello命令,并用input参数提供输入。

最后,我们使用assert语句来验证测试结果。我们检查result.exit_code是否为0(表示命令执行成功),并检查result.output是否与我们预期的输出一致。

通过这种方式,我们可以轻松地使用CliRunner()来测试基于命令行的应用程序,以确保其正确性和稳定性。

总结起来,CliRunner()click库中的一个类,用于测试基于命令行的应用程序。它提供了一组方便的方法来运行命令并检查结果。可以使用invoke()方法运行命令并获取Result对象,也可以使用invoke_cli()方法直接获取命令的输出、错误和退出码。