Comando expect no Linux (testes de software) [Guia Básico]

O comando expect no Linux e autoexpect podem ser extremamente úteis para testar um software.

Imagine que você construiu um programa em Shellscript, C, Python, Perl ou qualquer outra linguagem que executa no shell e interage com o usuário, perguntando parâmetros, e com base nos parâmetros fornecendo respostas.

Pois bem, testar este tipo de programa pode ser cansativo, uma vez que você terá que digitar várias vezes alguns parâmetros, até que seu programa esteja funcionando como esperado.

O comando expect e autoexpect podem ser úteis para fazer esse trabalho.

Para ilustrar, veja o pequeno script que pergunta o nome do usuário, em seguida o mês do ano:

$ cat script
#!/bin/bash
echo "Qual seu Nome?"
read NOME
echo "Qual mês do ano você quer ver o calendário?"
read MES
echo "$NOME, aqui vai o calendário:"
cal $MES 2020 

Para executar o script, é necessário torná-lo executável:

$ chmod +x script

Ao executá-lo:

$ ./script 
Qual seu Nome?
Uirá
Qual mês do ano você quer ver o calendário?
01
Uirá, aqui vai o calendário:
    Janeiro 2020      
do se te qu qu se sá  
          1  2  3  4  
 5  6  7  8  9 10 11  
12 13 14 15 16 17 18  
19 20 21 22 23 24 25  
26 27 28 29 30 31     

Imagine que você esteja refinando seu código, e tenha que testar o programa várias e várias vezes. Cansativo fazer isso manualmente.

Para criar um “auto-teste” da execução deste script, sem a necessidade de ter que digitar o nome e o mês a cada execução, pode-se usado o comando autoexpect:

$ autoexpect ./script
autoexpect started, file is script.exp
Qual seu Nome?
Uirá
Qual mês do ano você quer ver o calendário?
02
Uirá, aqui vai o calendário:
   Fevereiro 2020     
do se te qu qu se sá  
                   1  
 2  3  4  5  6  7  8  
 9 10 11 12 13 14 15  
16 17 18 19 20 21 22  
23 24 25 26 27 28 29  
                      
autoexpect done, file is script.exp

O programa autoexpect cria um arquivo com o nome do script, seguido da extensão .exp.

Este arquivo gerado é um shellscript que usa os comandos expect para ler as saídas do seu programa, e send enviar as contra respostas.

Agora, para testar o pequeno programa, basta executar o script script.exp:

$ ./script.exp 
spawn ./script
Qual seu Nome?
Uirá
Qual mês do ano você quer ver o calendário?
02
Uirá, aqui vai o calendário:
   Fevereiro 2020     
do se te qu qu se sá  
                   1  
 2  3  4  5  6  7  8  
 9 10 11 12 13 14 15  
16 17 18 19 20 21 22  
23 24 25 26 27 28 29  

Desta forma, você não precisará mais digitar nada. Apenas aprimorar e testar seu software. 

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe