Tradução de Shashi Kumar Raja
Então, digamos que você queira fazer a automação de API, mas toda vez que você digita a melhor ferramenta de automação de API na barra de pesquisa do Google, você vê tantos links para as 10 principais ferramentas que fica confuso e decide que definitivamente fará isso amanhã

Vamos começar entendendo o que precisamos se quisermos configurar (espero amanhã) uma plataforma de automação de API . Segure esse pensamento por um segundo ... Eu disse, pare de pensar ... Eu sei que seu chefe não atribui um centavo a nenhuma ferramenta paga . Olha, eu li sua mente, não pense em voz alta

As ferramentas pagas devem ser penduradas, não executadas :)
1. onde diabos devo começar a escrever testes?
Você precisará de algo que lhe forneça conjuntos de regras e diretrizes para escrever testes e também permita que você faça isso, fornecendo acesso a várias ferramentas e técnicas. Eu ouço uma campainha tocando, não !!! Bem, eu sei o que um sino fará.
Você já ouviu falar de TESTNG , JUNIT , MOCHA , PYTEST , ROBOT !? Sim, todos eles são ambientes de automação de teste.
Você precisa encontrar o ambiente de teste certo com base em seus requisitos: qual pilha de tecnologia existente sua empresa usa? Que automação você deseja fazer? Qual idioma é mais conveniente para você etc. Você encontrará um ambiente de automação nos idiomas mais populares que permitirá escrever tipos de unidade, funcionais e outros tipos de teste de API.
Para saber mais sobre o ambiente de teste, consulte a Parte 2 da série, onde introduzi o Mocha e o Pytest em detalhes .
2. Como vou fazer chamadas de API em um ambiente de teste?
A maioria dessas plataformas suporta chamadas de API, incluindo a biblioteca de solicitações HTTP , porque as APIs REST usam o protocolo HTTP para comunicação.
Algumas estruturas, como mocha , oferecem a liberdade de usar a biblioteca de solicitações HTTP de sua escolha, como superagent .
solicitação <code class = "lang-JS">
.post ('/ api / pet')
.send ({name: 'Manny', species: 'cat'}) // envia um corpo de postagem JSON
.set ('X-API-Key', 'foobar')
.set ('aceitar', 'json')
.end ((err, res) => {
// Chamar a função final enviará a solicitação
});
</code>
Eles oferecem suporte fácil para GET, PUT, POST, DELETE e todos os outros métodos.Você pode passar cabeçalhos, cache, solicitar parâmetros, como você chamou - você conseguiu
3. Legal, mas algumas das minhas APIs fornecem JSON e outras dão XML em resposta, como posso lidar com isso?
A maioria dessas bibliotecas de solicitações HTTP permite enviar e receber dados nos formatos JSON, XML, CSV, Texto, Imagem, formulário-dados, dados codificados com vários padrões de autorização suportados.
Eles também permitem processar o código de status da resposta HTTP e verificar se recebemos o código de status da resposta necessário ou não.
- Códigos de resposta informativos (1xx)
100 - Continuar
101 - Protocolos de comutação
102 - Processamento
- Códigos de resposta de sucesso (2xx)
200 - OK 206 - Conteúdo parcial
201 - Criado 207 - Multi-status
202 - Aceito 208 - Já relatado
203 - Informação não autorizada 226 - IM Usado
204 - Sem conteúdo 250 - Pouco espaço de armazenamento
205 - Redefinir conteúdo
- Códigos de resposta de redirecionamento (3xx)
300 - Várias opções 304 - Não modificado
301 - Movido permanentemente 305 - Usar proxy
302 - Encontrado 307 - Redirecionamento temporário
303 - Ver outros 308 - Redirecionamento permanente
- Códigos de resposta a erros do cliente (4xx)
400 - Múltiplas opções 410 - Não modificado
401 - Movido permanentemente 411 - Usar proxy
402 - Encontrado 412 - Redirecionamento temporário
403 - Ver Outro 413 - Redirecionamento Permanente
404 - Múltiplas opções 414 - Não modificado
405 - Movido permanentemente 415 - Usar proxy
406 - Encontrado 416 - Redirecionamento temporário
407 - Ver outros 417 - Redirecionamento permanente
408 - Encontrado 418 - Redirecionamento temporário
409 - Veja outros
- Códigos de resposta a erros do servidor (5xx)
500 - Erro interno do servidor 508 - Loop detectado
501 - Não implementado 509 - Bandwidth Limited
502 - Gateway ruim 510 - Não estendido
503 - Serviço indisponível 511 - autenticação de rede solicitada
504 - Tempo limite do gateway 550 - permissão negada
505 - Ver HTTP não suportado 551 - Opção não suportada
506 - A variante também negocia 598 - Erro de tempo limite de leitura de Nework
507 - Armazenamento insuficiente 599 - Erro de tempo limite de conexão à rede
4. Bom, mas como processarei os dados do teste?
Depende de onde você obtém os dados de teste. Essas estruturas de teste permitirão que você use todos os recursos do idioma em que se baseiam -
a. Banco de dados: você pode criar facilmente conexões de banco de dados para ler dados.
b. Arquivo externo: você pode ler texto externo, JSON, CSV ou qualquer outro arquivo.
c. Dados aleatórios: você pode usar bibliotecas como o faker para gerar dados de teste aleatórios em tempo real.
<código> var faker = require ('faker');
var randomName = faker.name.findName (); // Rowan Nikolaus
var randomEmail = faker.internet.email (); // Kassandra.Haley@erich.biz
var randomCard = faker.helpers.createCard (); // cartão de contato aleatório contendo muitas propriedades
</code>
d. Dados da resposta da API: muitas vezes durante o teste, você precisará passar a resposta de uma API como dados de solicitação para outra. Você pode fazer isso usando ganchos.Você obterá funções como Antes, Antes de cada, Depois, Depois de cada uma , que, como o nome indica, são executadas antes / após qualquer ou todos os testes. Ligue para a API1 antes da API2 e passe sua resposta para a API2. Just right !!! ️
5. Processar dados de teste e fazer chamadas de API parece simples, mas como vou verificar as respostas da API?
Para verificar as respostas, você precisará de uma biblioteca chamada Assertion library . Muitos ambientes de teste são fornecidos com bibliotecas de asserções, o que permite que você escreva assert s em inglês puro, como sintaxe. Eles também permitem que você verifique o esquema JSON da sua resposta.
No mocha, você pode usar qualquer biblioteca de asserções, por exemplo, chai .
<code> response.status.should.equal (200)
foo.should.be.a ('string');
foo.should.have.lengthOf (3);
tea.should.have.property ('sabores')
.com.lengthOf (3);
</code>
6. Incrível !!! Depois de todos esses testes, restava um pouco de alguma forma mostrar ao meu chefe o que eu fiz e onde encontrei problemas?
A maioria dessas estruturas fornece um relatório básico de execução de teste HTML , que você pode baixar e compartilhar. Se você precisar de relatórios mais bonitos com gráficos e tabelas, poderá usar várias ferramentas de relatório de código aberto, como allure ou mochawesome .

7. Somente se eu pudesse obter algum tipo de modelo com essas coisas para iniciar a automação da API agora
O que eu te disse, você chamou, você conseguiu
Este é o modelo que eu criei para automatizar a API usando o mocha no node.js.
Inclui
- Estrutura de teste (mocha),
- Biblioteca de solicitações HTTP (supertest),
- Biblioteca de asserções (chai),
- Repórter (fascínio),
- logger (winston),
- Gerador de dados aleatórios (falsificador),
- Suporte de Eslint e
- validação de string impertinente integrada . Tudo o que você precisa fazer é clonar / fazer o download e você está pronto para começar.
Se você precisar de um modelo em outro idioma, eu posso prepará-lo para amanhã.
Se você gostou deste artigo, pode bater palmas , provavelmente me fará escrever mais