Python 如何在不运行CLIrunner.invoke()的情况下将输入传递给click.confirm
我有一个用例,其中函数寻求用户确认继续。这基本上是:Python 如何在不运行CLIrunner.invoke()的情况下将输入传递给click.confirm,python,unit-testing,mocking,click,Python,Unit Testing,Mocking,Click,我有一个用例,其中函数寻求用户确认继续。这基本上是: def abc() response = click.confirm("Do you want to continue?") 基于此响应,它要么中止,要么继续 问题在于测试此功能abc @click.option('--yes', prompt=True) def test_abc(): with mock.patch.object(click.confirm, input="n"): click.echo(
def abc()
response = click.confirm("Do you want to continue?")
基于此响应,它要么中止,要么继续
问题在于测试此功能abc
@click.option('--yes', prompt=True)
def test_abc():
with mock.patch.object(click.confirm, input="n"):
click.echo("Aborted")
老问题,但我有同样的问题,我决定模拟
点击。确认
,这允许我模拟某人选择[y/N]
假设您的abc()
如下所示:
def abc():
if click.confirm("do you want to continue?", abort=True):
return "Confirmed"
return "Aborted"
然后您的测试模拟单击。确认至y/n
@mock.patch("click.confirm")
def test_abc_aborted(mock_click):
mock_click.return_value = False
assert abc() == "Aborted"
@mock.patch("click.confirm")
def test_abc_confirmed(mock_click):
mock_click.return_value = "y"
assert abc() == "Confirmed"
包含abc
的模块的其余部分是什么样子的?通常,您会修补一个函数,如修补('.单击.confirm',返回\u value=True)
。