Como automatizar seus testes usando um Modelo de Testes de API em JavaScript

Bruno Nascimento de Figueiredo
Bee Lab Academy
Published in
4 min readJun 16, 2020

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.

https://github.com/brunonf15/template_project_tests_api_js/blob/master/mocha.opts

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.

https://github.com/brunonf15/template_project_tests_api_js/blob/master/package.json

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.

https://github.com/brunonf15/template_project_tests_api_js/blob/master/package.json

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

https://github.com/brunonf15/template_project_tests_api_js/blob/master/config/settings.js

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:

https://github.com/brunonf15/template_project_tests_api_js/blob/master/models/api.js

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

https://github.com/brunonf15/template_project_tests_api_js/blob/master/models/starWarsPeople.api.js

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.

https://github.com/brunonf15/template_project_tests_api_js/blob/master/specs/starWars.spec.js

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:

Testes executados

É 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:

--

--