2013-07-19 40 views
1

我正在试图编写一个behave python程序的测试用例,该程序需要来自Stdin的输入。具有行为的交互式python程序的单元测试

我现在调用它是这样的:

import my_script 

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

而且myscript.cli需要指定参数和与​​分析它们,并最终有一行写着`值的raw_input =(“做出选择”)。这是行为测试停止并等待输入的地方。我想给输入我的步骤是这样的:

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

我想我会嘲笑一个标准输入接口,并让我的脚本中使用,在测试的情况下,但我不知道什么是最优雅的表现方式是。

回答

0

behave使用“behave4cmd0”进行自我测试(与行为)。这包含一个步骤定义@when('我运行“{命令}”')。你可以在“environment.py”中注册你的命令,它会被称为子进程。

“behave4cmd0”目前缺乏您需要与产生的子流程进行交互的功能(但这是计划在未来)。你可以面对的问题与行为无关。这只是一个简单的编程或Python问题。查看Python子进程模块或pyexpect。它应该提供您需要的功能。

您还可以查看aruba's interactive功能,查看问题如何映射到步骤定义。

相关问题