我正在尝试编写一个python程序的测试用例,其behave期望从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):
...
我想我将不得不模拟一个stdin接口并让我的脚本在测试用例中使用它,但我不确定使用行为最优雅的方式是什么。
答案 0 :(得分:0)
behave使用“behave4cmd0”进行自检(带有行为)。这包含一个步骤定义@when('I run“{command}”')。您可以在“environment.py”中注册命令,它将被称为子进程。
“behave4cmd0”目前缺少与生成的子流程交互所需的功能(但计划将来使用)。你可以面对的问题与行为没什么关系。它只是一个简单的编程或Python问题。查看Python子进程模块或pyexpect。它应该提供您需要的功能。
您还可以查看aruba's interactive功能,了解如何将问题映射到步骤定义。