python - 使用单击选项 python 测试 cli 命令

标签 python testing click

嗨,我正在尝试测试这个功能。在 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 中

从 click.testing 导入 CliRunner 从 cli 导入运行

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

我收到以下错误:缺少选项 --param

最佳答案

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/

关于python - 使用单击选项 python 测试 cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69270037/

相关文章:

java - 使用 AbstractTransactionalJUnit4SpringContextTests : changes in DB not reverted after test method 测试纯 JDBC DAO 方法

actionscript-3 - 所有 child 均已禁用,只有一只鼠标处于事件状态

jquery:即使在我使用单击事件隐藏 div 后也会触发 mouseout 事件

javascript - 谷歌地图控制按钮

python - SQLAlchemy 参数化一个不带引号的值

python - 在 Eclipse 中使用 Pydev 的交互式控制台?

用于单元测试的 XML 数据

javascript - karma 测试中的未知 vendor

python - 在 PyCharm IDE 5.0.4 中运行特定的单元测试功能

python - 在 Python 中使用空字典创建一个集合返回 False