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)