Expect-lite:非常简单的脚本在简单的C ++程序上失败

时间:2016-12-09 17:03:56

标签: automated-tests expect

我正在尝试学习如何使用expect-lite自动化CLI程序。但是,经过几个小时阅读文档后,我仍然无法执行一个非常简单的脚本来测试我制作的一个简单的C ++程序。我正在使用cygwin在windows上运行expect-lite。我的程序只接收用户输入并打印一些东西作为回报:

#include <iostream>
#include <string>
using namespace std;

int main(){
    string command;
    cout << "Input command:\n";
    cin >> command;
    if (command=="continue")
        cout << "We shall continue";
    else
        cout << "The end";
    return 0;
}

我的expect-lite脚本看起来像这样:

> ./myprogram
< Input command:
>> continue
< We shall continue

但我得到的输出如下:

$ ./expect-lite -c testing.elt
Warning: Remote Host=none, using Localhost
spawn bash

hp@hp-HP ~/expect-lite.proj
$
hp@hp-HP ~/expect-lite.proj
$
hp@hp-HP ~/expect-lite.proj
$
hp@hp-HP ~/expect-lite.proj
$ PS1="[\u@\h:\w]\$ "
[hp@hp-HP:~/expect-lite.proj]$
[hp@hp-HP:~/expect-lite.proj]$  ./myprogram
Input command:
Waiting: ....+....
FAILED COMMAND: ./myprogram

    Expect Failed: Input command:
exit
The end[hp@hp-HP:~/expect-lite.proj]$
##Overall Result: FAILED

hp@hp-HP ~/expect-lite.proj

我只是在一个非常简单的程序上尝试这个非常简单的脚本作为起点,但我没有让它工作。关于为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

好的,一个简单程序的简单解决方案:我在expect-lite脚本中使用了额外的空格。 我通过删除它来解决了这个问题:

>./myprogram
<Input command:
>>continue
<We shall continue

现在我收到一个“警告,提示超时”输入命令:“和”继续“但我会弄清楚。测试现在正在通过。