交互输入自动化

就编写自动化工具或测试工具而言,实现命令的交互输入自动化极其重要。在很多情况下, 我们要同一些以交互方式读取输入的命令打交道。下面的例子就是一个要求提供交互式输入的命 令执行过程。

$ command
Enter a first-name: lee
Enter last-name: mp
hello world!! lee mp

先写一个读取交互式输入的脚本,然后用这个脚本进行自动化的演示:

#!/bin/bash
#文件名: interactive.sh
read -p "Enter first-name:" a ;
read -p "Enter last-name:" b
echo Hello world $a $b;

执行结果:

$ ./interactive.sh
Enter first-name:lee
Enter last-name:mp
Hello world lee mp

用echo -e来生成输入序列

$ echo -e "1\nhello\n" > input.data
$ cat input.data
1
hello

然后我们就可以从文件中导入交互式输入数据:

$ ./interactive.sh < input.data

是不是很棒棒~~!

用expect实现交互自动化测试

在默认情况下,多数常见的Linux发行版中并不包含expect。你得用软件包管理器手动进行 安装。

yum install -y expect

expect等待特定的输入提示,通过检查输入提示来发送数据。

#!/usr/bin/expect
#文件名: automate_expect.sh
spawn ./interactive.sh
expect "Enter first-name:"
send "lee\n"
expect "Enter last-name:"
send "mp\n"
expect eof
  • spawn参数指定需要自动化哪一个命令;
  • expect参数提供需要等待的消息;
  • send是要发送的消息;
  • expect eof指明命令交互结束。

    运行结果如下: $ ./automate_expect.sh

spawn ./interactive.sh
Enter first-name:lee
Enter last-name:mp
Hello world lee mp

results matching ""

    No results matching ""