Como automatizar seus testes usando um Modelo de Testes de API em JavaScript
Neste post, criaremos um projeto modelo para que você possa fazer requests em uma API usando JavaScript e para isso consumiremos a API Star Wars para nossos testes.
Vamos lá!
Pré requisitos:
— Conhecimento básico sobre API’s e métodos HTTP
— NodeJS instalado (Para baixar, clique aqui).
Para verificar se o node e o npm foram instalados, abra o terminal e digite:
node -v
e depois
npm -v
Se tiver tudo correto, o terminal, como a imagem a seguir:
Criando a estrutura do projeto:
1- Crie uma pasta para adicionar os testes, configurações e outros arquivos necessários para testarmos a API, no meu caso, criei em
C:\git\template_project_tests_api_js
Configurar Mocha
1- Na pasta do projeto, crie um arquivo [.mocha.opts];
2- Insira os dados abaixo no arquivo .mocha.optse salve:
Basicamente configuramos alguns parâmetros do mocha, como adicionar e configurar um reporter para exibir os resultado dos testes, e configurar um timeout para execução dos testes.
Configurando o Babel para JS:
1- Na pasta do projeto, crie um arquivo [.babelrc];
2- Insira os dados abaixo no arquivo .babelrc e salve:
Essa configuração vai permitir usar JavaScript se preocupar muito com sintaxe.
Continuando a construir a estrutura do projeto:
1- Na pasta do projeto, crie um arquivo [package.json] nos testes da pasta;
2- Insira os dados abaixo no arquivo package.json e salve:
Esse arquivo é responsável principalmente por configurar as dependências do projeto assim como alguns scripts, neste caso inclusive adicionamos o script de teste que será usado para executar os testes.
4- Abra o terminal na API da pasta do projeto e execute o comando:
npm install
Crie uma estrutura de configuração
Config
Crie uma pasta [config] na pasta do projeto; os arquivos nesta pasta são o endereço do servidor para o qual você deseja enviar as requests
URL_BASE — O servidor que você vai testar, neste caso, é https://swapi.dev/api
Modelo
Então, aqui começamos efetivamente o projeto, usando superagent, para fazer requests simples e reutilizáveis.
Crie uma pasta [models] na pasta do projeto, os arquivos nessa pasta serão os modelos que você enviará requests, basicamente, estamos criando uma classe abstrata chamada API e, em seguida, estendendo essa classe.
Crie um arquivo [api.js] nos testes da pasta [models];
Insira os dados abaixo no arquivo api.js e salve:
Vamos fazer as requests, queremos testar a API de duas maneiras:
A primeira maneira é:
Enviar um get para https://swapi.dev/api/people/
e o segunda é enviar um get para https://swapi.dev/api/people/1 (neste caso permitindo passar o número 1 por parametro)
Usando dois métodos diferentes, o primeiro método é um getAll, obtendo todo o caractere da API e o segundo método pesquisará um caractere específico pelo seu ID, também estamos definindo o tipo de conteúdo como application/JSON
Specs
Crie uma pasta [specs] na pasta do projeto, os arquivos nesta pasta são testes que você enviará em requests e usando a biblioteca Chai para fazer as afirmações.
Vamos fazer três testes:
O primeiro é obter todas as pessoas e verificar se a resposta de status é 200, o segundo para verificar se o Luke Skywalker é a pessoa número um e o ultimo teste pesquisa por Harry Potter na API de Guerra nas Estrelas e verifica se ele é listado.
Terminando a escrita dos testes, devemos ter essa estrutura de projeto
Para finalmente executar os testes: abra o terminal na pasta do projeto e execute o comando:
npm test
Veja o resultado dos testes:
É isto!
Espero que tenham aprendido a montar este projeto model de testes de API, para este caso só foi apresentado get, mas pode ser testado todos os métodos HTTP.
Além disso também é possível integrar esses testes com outras bibliotecas de banco de dados, assim como essa estrutura pode ser usada para validar mocks e até mesmo integrar-se com pipelines. Pode ser que depois eu mostre isso no futuro, mas para já é isso.
Quero agradecer a Demis Meneghetti por todo o apoio para fazer este projeto.
Se você deseja baixar ou contribuir com este projeto, segue o link do GitHub
Test model API using JavaScript:
Referências: