如何测试带Python Click选项的CLI命令,解决Missing option --param报错
CLI测试报错
Missing option --param修复方案 错误原因
你的测试代码存在三处问题直接触发报错:
- 参数字典键名不匹配:CLI定义的必填参数名为
param,但你写的字典键为int,Click无法识别到--param的传值,直接触发参数缺失报错 - 参数传递方式错误:
CliRunner.invoke的args参数不直接接收字典格式的参数,仅支持参数列表格式 - 变量名笔误:定义的返回值变量为
result,断言时错写为resutlts,会额外触发NameError
修复后的测试代码
你可以任选以下两种传参方式中的一种:
方式1:传参数列表(和命令行输入格式一致)
from click.testing import CliRunner from cli import run def test_cli(): runner = CliRunner() result = runner.invoke(run, args=["--param", "5", "--plot", "False"]) # 优先断言执行成功,再校验输出 assert result.exit_code == 0 assert result.output == ""
方式2:直接传关键字参数(写法更简洁)
from click.testing import CliRunner from cli import run def test_cli(): runner = CliRunner() # 无需指定args参数,直接将CLI参数作为关键字传入即可 result = runner.invoke(run, param=5, plot=False) assert result.exit_code == 0 assert result.output == ""
注意:如果你的
myfunction方法存在标准输出内容,断言result.output == ""会失败,请根据实际业务逻辑调整断言规则。
内容的提问来源于stack exchange,提问作者abdellah
相关产品推荐
相关产品推荐

