Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Caravana Cloud: Como testar e documentar REST A...

Caravana Cloud: Como testar e documentar REST APIs com ScanAPI

Essa semana passamos pelo Módulo 04 do conteúdo do nosso Programa de Mentoria e nessa sexta-feira teremos a ilustre participação da @cmaiacd que vai conversar com nossos mentorados sobre REST APIs e o projeto open source dela - o @scanapi\_ - ao vivo na mentoria coletiva! 🤩

https://twitter.com/CaravanaCloud/status/1408084280497127426?ref_src=twsrc%5Etfw

Caravana Cloud: http://site.caravana.cloud

Camila Maia

June 25, 2021
Tweet

More Decks by Camila Maia

Other Decks in Technology

Transcript

  1. Quem sou eu? - Desenvolvedora Backend - 10+ anos xp

    👵 - Python 🐍 e Ruby 💎 - OpenSource e Comunidades ❤ - Organização de eventos: Pyjamas, EuroPython, Python Brasil….
  2. • São rotinas que verificam o funcionamento do seu código

    • Substituem os teste manuais • Economizam seu tempo • Não apenas identificam problemas, eles os evitam • Ajudam no trabalho em equipe • Garantem código de qualidade e robusto Testes O quê são?
  3. Testes • Alguns testes podem se aplicar pequenos detalhes do

    sistema. Um método de modelo específico retorna valores conforme o esperado? • Outros examinam a operação geral do sistema Uma sequência de entradas do usuário no site produz o resultado desejado? • Existem os que avaliam a comunicação entre sistemas Os diferentes tipos
  4. • Framework de código aberto • Command line interface (CLI)

    • Escrito em Python Objetivos: 1. Fornecer Live Documentation 2. Possibilitar a implementação de Testes de Integração O quê é?
  5. # scanapi.yaml endpoints: - name: pokeapi path: https://pokeapi.co/api/v2/ endpoints: -

    name: pokemon path: pokemon requests: - name: list_all method: get path: / Como funciona? Exemplo: PokéAPI path: https://pokeapi.co/api/v2/ pokemon / name: pokeapi :: pokemon :: list_all
  6. • import requests • response = requests.get("https://pokeapi.co/api/v2/pokemon/") • dir(response) •

    response.status_code • response.headers • response.elapsed.total_seconds() • response.json() https://requests.readthedocs.io Python requests
  7. ... requests: - name: list_all method: get path: / tests:

    - name: status_code_is_200 assert: ${{ response.status_code == 200 }} - name: response_time_is_under_half_second assert: ${{ response.elapsed.total_seconds() < 0.5 }} - name: results_length_is_20 assert: ${{ len(response.json()["results"]) == 20 }} - name: count_is_gte_1118 assert: ${{ response.json()["count"] >= 1118 }} Como funciona? Testes de Integração ✅
  8. Como funciona? - Pegar detalhes de um Pokémon - Neste

    caso o dado é “estático”, mas poderia não ser https://pokeapi.co/api/v2/pokemon/bulbasaur Encadeamento ⛓
  9. Como funciona? ... endpoints: - name: pokemon path: pokemon requests:

    - name: list_all method: get path: / vars: pokemon_name: ${{ response.json()["results"][0]["name"] }} tests: ... - name: details method: get path: ${pokemon_name} pokemon/${pokemon_name}
  10. Como funciona? E tem mais 🎉 - Especificação também é

    aceita em JSON - Especificação em vários arquivos - Delay entre requests - Relatórios Customizados - VS Code Plugin
  11. Por que utilizar ScanAPI? 8 motivos! 1. Funciona para qualquer

    API REST 2. Excelente para testar e documentar APIs próprias e de terceiros 3. É possível encadear requests, o que é essencial para testar cenários complexos 4. A documentação é gerada automaticamente, ela nunca fica desatualizada 5. É simples. A sintaxe é simples e não requer quase nenhum conhecimento específico da linguagem 6. É extremamente flexível 7. É seguro 8. Não há nada no mercado que faça o que o ScanAPI faz