1

我正在尝试为 python 程序编写测试用例,其行为需要来自 Stdin 的输入。

我目前像这样调用它:

import my_script

@when('we run "{command}"')
def run(context, command):
    args = command.split()[1:]
    my_script.cli(args)

myscript.cli接受 args 并用 解析它们argparse,最终有一行写着 `value = raw_input("Make a choice")。这是行为测试停止并等待输入的地方。我想在我的步骤中提供如下输入:

@when('we run "{command}" and enter "{text}"')
def run(context, command, text):
    ...

我想我将不得不模拟一个标准输入接口并让我的脚本在测试用例中使用它,但我不确定使用行为最优雅的方法是什么。

4

1 回答 1

0

行为使用“behave4cmd0”进行自检(使用行为)。这包含一个步骤定义@when('I run "{command}"')。您可以在“environment.py”中注册您的命令,它将被称为子进程。

“behave4cmd0”当前缺少与生成的子进程交互所需的功能(但这是为将来计划的)。您可能面临的问题与行为无关。这只是一个简单的编程或 Python 问题。查看 Python 子进程模块或 pyexpect。它应该提供您需要的功能。

您还可以查看aruba 的交互功能,了解如何将您的问题映射到步骤定义。

于 2013-08-03T20:04:04.823 回答