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

使用CliRunner()构建交互式命令行界面

发布时间:2023-12-24 06:01:13

使用CliRunner()构建交互式命令行界面的例子:

from click.testing import CliRunner, Result

def greet_user():
    name = input("请输入您的姓名:")
    print(f"欢迎您,{name}!")

def calculate_sum():
    num1 = int(input("请输入      个数字:"))
    num2 = int(input("请输入第二个数字:"))
    result = num1 + num2
    print(f"两个数字之和为:{result}")

runner = CliRunner()

def test_greet_user():
    with runner.isolated_input("John"):
        result: Result = runner.invoke(greet_user)
        assert result.exit_code == 0
        assert result.output == "欢迎您,John!
"

def test_calculate_sum():
    with runner.isolated_input("10
20"):
        result: Result = runner.invoke(calculate_sum)
        assert result.exit_code == 0
        assert result.output == "两个数字之和为:30
"

在这个例子中,我们首先定义了两个交互式的命令行函数greet_user()和calculate_sum()。greet_user()函数询问用户的姓名,并输出欢迎消息。calculate_sum()函数要求用户输入两个数字,并计算它们的和。

然后,我们使用CliRunner()类创建了一个runner实例,这个实例可以模拟用户的输入和命令行的输出。我们定义了两个测试函数test_greet_user()和test_calculate_sum(),用来测试greet_user()和calculate_sum()函数的功能。

在这些测试函数中,我们使用runner.isolated_input()来模拟用户输入。然后,我们使用runner.invoke()来执行相应的命令行函数,并获取输出结果。最后,我们使用assert语句来验证输出结果是否符合预期。

这个例子展示了如何使用CliRunner()来构建交互式命令行界面,并进行相应的单元测试。通过模拟用户的输入和命令行的输出,我们可以很方便地测试命令行函数的功能和正确性。