Comando autoexpect no Linux (testes de software) [Guia Básico]
O comando autoexpect no Linux e expect 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/bashecho "Qual seu Nome?"read NOMEecho "Qual mês do ano você quer ver o calendário?"read MESecho "$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?01Uirá, 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 ./scriptautoexpect started, file is script.expQual seu Nome?UiráQual mês do ano você quer ver o calendário?02Uirá, 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 ./scriptQual seu Nome?UiráQual mês do ano você quer ver o calendário?02Uirá, 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.