如何使用Python Click选项测试cli命令

问题描述 投票:0回答:1

我正在尝试测试这个功能。在

cli.py
我有

import myfunction
import click
@click.command(name="run")
@click.option("--param", required=True, type=int)
@click.option("--plot", required=False, default=False)
def run(param, plot):
    myfunction(param, plot) 

在我的

test_cli.py

from click.testing import CliRunner
from cli import run

def test_cli():
    kwargs = {"int": 5, "plot": False}
    runner = CliRunner()
    result = runner.invoke(run, args=kwargs)
    assert resutlts.output == ""

我收到以下错误:

Missing option --param 
python testing python-click
1个回答
2
投票

CliRunner.invoke
采用命令行参数列表,而不是函数参数。

具体来说你需要这样称呼它:

runner.invoke(run, args=["--param", "5"])
runner.invoke(run, "--param 5")

对于多个参数,您可以使用任一模式:

runner.invoke(run, args=["--param", "5", "6"])
runner.invoke(run, args="--param 5 6")

参考文献

https://click.palletsprojects.com/en/8.0.x/testing/

© www.soinside.com 2019 - 2024. All rights reserved.