我正在尝试学习如何使用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
我只是在一个非常简单的程序上尝试这个非常简单的脚本作为起点,但我没有让它工作。关于为什么会发生这种情况的任何想法?
答案 0 :(得分:0)
好的,一个简单程序的简单解决方案:我在expect-lite脚本中使用了额外的空格。 我通过删除它来解决了这个问题:
>./myprogram
<Input command:
>>continue
<We shall continue
现在我收到一个“警告,提示超时”输入命令:“和”继续“但我会弄清楚。测试现在正在通过。