使用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()来构建交互式命令行界面,并进行相应的单元测试。通过模拟用户的输入和命令行的输出,我们可以很方便地测试命令行函数的功能和正确性。
