Exemplo de estrutura de automação de API feita com Supertest e Mocha
- Docker e Docker-compose instalados.
Os testes foram realizados em cima do Serverest, que fornece rotas REST para fins de estudos.
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/.
O resultado dos testes são apresentados no terminal e em report HTML gerado com mochawesome.
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.
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.
- 📃 get.test.js Arquivo de teste do verbo GET
- 📁 utils/: Dir com todos os métodos consumidos pelos testes
- 📁 usuarios/ Dir com os testes da rota usuarios. O nome do diretório sempre será o da rota validada.
- 📃 .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
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.
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"
},
É 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