Skip to content

Exemplo de estrutura de automação de API com report, dados aleatórios e execução em variados ambientes. Uso das libs NPM Supertest, Mocha, Chai, Faker, entre outras

License

Notifications You must be signed in to change notification settings

PauloGoncalvesBH/sample-supertest

Repository files navigation

Supertest - Sample

Testes de API ServeRest API

Exemplo de estrutura de automação de API feita com Supertest e Mocha


Instalação e execução

Pré-requisitos

Testes de API

Os testes foram realizados em cima do Serverest, que fornece rotas REST para fins de estudos.

Executando os testes

Para executar os testes direcionados para o ambiente de produção (https://serverest.dev), execute:

make test-prod

Para executar os testes em ServeRest executando localmente (http://localhost:3000), execute:

make test-local

Antes do teste acima ser executado o container do ServeRest é iniciado localmente

As variáveis por ambiente estão definidos dentro dos arquivos *.config.js em config/.

Resultado

O resultado dos testes são apresentados no terminal e em report HTML gerado com mochawesome.

Sobre o projeto

Dependências utilizadas

lib descrição
Supertest Biblioteca de automação de API
Mocha Estrutura (describe, it, etc) e runner da automação
Chai Asserção em formato de BDD / TDD
@hapi/joi Biblioteca para criação de schemas
Faker Gera dados aleatórios para serem utilizados nos testes
Mochawesome Gera report HTML
Standard Linter e formatter do código JS

As dependências estão definidas no package.json.

Estrutura de diretórios

sample-supertest/
 ├─ config/
 |   ├─ local.config.js
 |   └─ producao.config.js
 ├─ test/
 |   ├─ rota*/
 |       ├─ get.test.js
 |       └─ post.test.js
 |   └─ utils/
 ├─ .mocharc.js
 ├─ package.json
 ├─ Makefile
 ├─ docker-compose.yml
 └─ Dockerfile
  • 📁 config/: Dir com as variáveis que dependem do ambiente (ex.: url, senha, password)
  • 📁 test/: Dir com os testes das rotas e arquivos que auxiliam a automação
    • 📁 usuarios/ Dir com os testes da rota usuarios. O nome do diretório sempre será o da rota validada.
    • 📁 utils/: Dir com todos os métodos consumidos pelos testes
  • 📃 .mocharc.js: Arquivo de configuração do Mocha
  • 📃 package.json: Arquivo com informações das dependências do projeto, licença, scripts, autor, etc. Para saber mais clique aqui

Ambiente

Determinados testes possuem dados atrelados a ambiente, como URL, que varia entre ambiente local, de homologação, produção, etc.

Caso precisarmos setar password para o ambiente local, acesse o arquivo local.config.js e crie a variável password com seu respectivo valor.

= module.exports = {
+  password: 'SENHA_PRODUCAO_123',
=   url: 'http://localhost:3000'
= }

Para consumir essa variável no seu arquivo de teste, importe o dir config/:

// test/usuarios/post.test.js

const config = require('../../config')
console.log('Valor de Password:', config.password)
// Valor de Password: SENHA_PRODUCAO_123

Para informar em qual ambiente o seu teste irá rodar informe no script de teste o nome inicial do arquivo de conf.

Exemplo:

Para testar o ambiente hom deve ser criado o arquivo hom.config.js e o comando de execução fica igual a AMBIENTE='hom' mocha

Scripts atuais do package.json

"scripts": {
  "test": "AMBIENTE='local' mocha",
  "test:prod": "AMBIENTE='producao' mocha"
},

Lint

É boa prática que os arquivos estejam padronizados, seguindo o padrão de estilo do JS. Para isso é utilizado a lib Standard.

Após o término da sua implementação, execute:

npm run lint:fix

About

Exemplo de estrutura de automação de API com report, dados aleatórios e execução em variados ambientes. Uso das libs NPM Supertest, Mocha, Chai, Faker, entre outras

Topics

Resources

License

Stars

Watchers

Forks