Automatizando o Postman

Automatizando o Postman

E ae, também é um amante do Back-End como eu? Se sim, aposto que adora usar o Postman ou o Insomnia para explorar as possibilidades da sua API. Estes são só dois dos vários REST Clients do mercado atualmente, e o meu preferido é sem dúvidas o Postman! Acho muito bom as formas como podemos tratar cada API independentemente, com processos pré-definidos, interações entre diferentes endpoints, declaração de variáveis com diferentes níveis de escopo — por WorkSpace, pasta ou endpoint e muito mais!


Vamos começar criando nossos WorkSpaces!

Agora que você está com seu Postman instalado e com a sua conta já criada na plataforma, vamos dar o primeiro passo para ter um ambiente organizado e o melhor de tudo, com a sua cara! Vamos criar um WorkSpace.

  1. Na tela inicial da aplicação, clique em WorkSpaces. Tela inicial do Postman
  2. Clique em Create Workspace Tela inicial do Postman
  3. Então somos apresentados a essa tela! Tela inicial do Postman Ela nos apresenta diversos recursos e templates de Workspaces pré definidos pela aplicação! Eu considero a pratica de dividir meus Workspaces no Postman por 'ambiente' uma boa pratica não só por quesito de organização, mas também para definir os limites da responsabilidade de cada Collection que eu trabalho, tornando mais claro o que cada variável pode fazer em determinado escopo. Por exemplo, eu tenho um Workspace para as minhas aplicações pessoais, um para estudos e cursos, e um para o trabalho.
  4. Vamos criar um Workspace em branco. Depois de clicar em NEXT na parte inferior esquerda da tela, somos apresentados a tela onde podemos escolher o nome do Workspace, seu tipo e sua visibilidade. Tela inicial do Postman Depois disso você será apresentado a uma tela onde deve criar um nome para um time, e mais algumas informações que no momento não são importantes. Basta preenche-las e então criar o Workspace! Após isso você será apresentado a essa tela: Tela inicial do Postman Como pode ver, destaquei as áreas de interesse para que possamos finalmente colocar a mão na massa e automatizar alguns endpoints!
  5. Agora será necessário que você tenha o Docker instalado na sua maquina, para que possamos fazer juntos os proximos passos. Certifique-se de que o Docker esteja rodando na sua maquina, ai basta rodar o seguinte comando:
    docker run -p 3000:3000 guilhermeabroncari/mini-api-rest-client
    
    • É uma boa entender o que a flag -p com as portas 3000:3000 representam neste comando, pois se a porta 3000 na sua maquina está ocupada, você pode simplesmente apontar para outra porta que esteja live na sua maquina, como por exemplo a porta 8765:3000!
    • Caso não tenha o Docker mas tenha o Node.js instalado na sua maquina, pode clonar o repositório e rodar a mini-api-rest-client que criei localmente.
  6. Agora basta criar a nossa primeira Collection e dar um nome. Então vamos adicionar uma nova pasta. Tela inicial do Postman
    • A forma como você vai organizar as suas pastas e chamadas vai do seu próprio gosto, e a forma como eu gosto de fazer é dividir da seguinte forma:
      • Pastas => Recursos oferecidos pela API
      • Requests declaradas dentro da pasta => Verbos HTTP separados por tipo, seguindo o fluxo CRUD, ou seja:
        • POST ---------- (Create)
        • GET ----------- (Read)
        • PUT/PATCH --- (Update)
        • DELETE ------- (Delete)
        • Demais verbos (HEAD, OPTIONS, etc...)
  7. Nossa api de teste, possui apenas um pequeno CRUD de items, mas só porquê ela é pequena, não significa que seja bagunça! Caso tente fazer qualquer chamada que não seja um post para a rota http://localhost:3000/auth você será barrado por não estar devidamente autenticado!
    • Dito isso, vamos criar a pasta auth com uma request do tipo POST mandando o seguinte objeto no corpo da requisição:
    {
      "username": "user",
      "password": "123"
    }
    
    • Por se tratar de uma api de testes, o usuário e a senha podem ser qualquer coisa, desde que os campos não estejam vazios.
  8. Após fazer isso sua resposta será:
    {
      "token": "meu-token-super-seguro"
    }
    
    E com isso vamos finalmente poder fazer as requisições para os endpoints! E para começar a otimizar as coisas, vamos colocar esse token numa variável de ambiente Global no Postman!
  9. Você pode colocar variáveis de ambiente em vários lugares e em vários níveis diferentes no Postman. Com um pouco de discernimento e pratica vai acabar encontrando o lugar ideal para cada situação ideal no seu dia a dia. Vamos colocar o nosso token super seguro a nivel global, assim ele poderá ser referenciado em qualquer lugar no nosso Workspace. Tela com variáveis globais
    • Você ainda pode defini-las na pasta que agrupa seus endpoints. Tela de variáveis a nivel de pasta
    • E no endpoint em si. Tela com variável em endpoint
  10. Como pode reparar, já adicionei duas novas variáveis para os nossos testes. a base_url que guarda o valor http://localhost:3000/, e recomendo que faça o mesmo para que possamos continuar. Aproveite e já crie a seguinte variável a nivel de Collection com sem preencher seu valor ainda: last_created_item_id
  11. Agora vamos guardar variáveis de ambiente para os outros endpoints de forma dinâmica. Como exemplo, vamos escrever nosso endpoint que cria novos items e recebe o item criado como resposta no payload. Então vá para a sessão de Scripts que é onde a magica acontece. Tela com payload de criação
  12. Nessa sessão, pode-se perceber que existem duas abas laterias, a Pré-REQ e a Post-REQ! Os nomes são bem auto-explicativos. Vamos trabalhar com o Post-req neste exemplo. Aqui no script trabalhamos com o objeto pm, que apresenta todas as funcionalidades das requests que o Postman está executando pra gente. Tela de script
    • Como pode ver, estamos atribuindo a variável a nivel de Collection. Explore as opções e se aprofunde mais usando a documentação oficial.
  13. Agora podemos simplesmente usar essa variável que foi preenchida no passo anterior na nossa proxima chamada! Tela mostrando uso da variável
    • Agora você já tem a base para poder praticar em todos os endpoints dessa mini-api! Manda bala!!!

Com estes conhecimentos, você já é capaz de reduzir bastante a carga repetitiva de testes manuais em suas API's! Espero que até aqui você já tenha adquirido conhecimento util para o seu dia a dia. Como esse artigo já está se estendendo mais do que eu esperava, vou dividi-lo em mais partes.

Muito obrigado por ler até aqui te vejo numa proxima!