单击:在没有 运行 代码的情况下测试 click.group 命令
Click: Test click.group commands without running their code
我目前正在为我的应用程序编写测试,因此,我必须测试我定义的一些 click.group
命令:
假设我将它们定义为:
@click.group(cls=MyGroup)
@click.pass_context
def myapp(ctx):
init_stuff()
@myapp.command()
@click.option('--myOption')
def foo(myOption: str) -> None:
do_stuff() # change some files, print, create other files
我知道我可以使用 CliRunner from click.testing
。但是,我只想确保调用了该命令,但我不想让它执行任何代码(例如通过应用 CliRunner.invoke()
)。
这是怎么做到的?
例如,我无法想出使用 foo
模拟的解决方案。或者我是否必须使用 CliRunner
提供的 isolated_filesystem()
来执行代码?
所以问题是:当如上所示定义时,测试我的命令的最有效方法是什么?
非常感谢
您可以为您的组或一些命令添加一个--dry-run
标志,并将其保存在上下文中,如果启用该标志,则不要执行任何代码。然后,您可以在启用 --dry-run
标志的情况下使用 CliRunner.invoke()
,只需检查您的调用是否已发生,而无需实际执行代码。
我目前正在为我的应用程序编写测试,因此,我必须测试我定义的一些 click.group
命令:
假设我将它们定义为:
@click.group(cls=MyGroup)
@click.pass_context
def myapp(ctx):
init_stuff()
@myapp.command()
@click.option('--myOption')
def foo(myOption: str) -> None:
do_stuff() # change some files, print, create other files
我知道我可以使用 CliRunner from click.testing
。但是,我只想确保调用了该命令,但我不想让它执行任何代码(例如通过应用 CliRunner.invoke()
)。
这是怎么做到的?
例如,我无法想出使用 foo
模拟的解决方案。或者我是否必须使用 CliRunner
提供的 isolated_filesystem()
来执行代码?
所以问题是:当如上所示定义时,测试我的命令的最有效方法是什么?
非常感谢
您可以为您的组或一些命令添加一个--dry-run
标志,并将其保存在上下文中,如果启用该标志,则不要执行任何代码。然后,您可以在启用 --dry-run
标志的情况下使用 CliRunner.invoke()
,只需检查您的调用是否已发生,而无需实际执行代码。