camilagomo / testeApi

Testando API com Postman e documentação swagger

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Teste de API

Testando API com Postman e documentação padrão swagger.

Exercício 1 - Teste de API Utilize a Swagger Petstore (https://petstore.swagger.io/):

  1. Crie os usuarios Ana Maia, Rodrigo Mendes, Tatiana Vasconcelos
  2. Crie os pets Snoopy (dog), Bichento (cat) e Perry (platypus)
  3. Mude o status da ordem de venda do Perry e do Snoopy para "approved" e do Bichento para "delivered"
  4. Consulte as 3 ordens geradas

OBS: Durante os testes identifiquei que a persistência de dados na criação de um novo Pet, falha após alguns segundos. Não persiste os dados por muito tempo. Portanto salvei algumas das consultas para exemplificar a resolução do exercício, antes que estas não pudessem mais ser validadas.


Solucionando exercício:


Para facilitar a edição dos métodos GET, POST, UPDATE e DELETE defini a variável baseUrl com o end-point "https://petstore.swagger.io/v2" com valor inicial {{baseUrl}}. A partir disso, os novos métodos criados não são necessários de serem atualizados com a url completa, apenas passamos a variável {{baseUrl}}/diretório.


1) Crie os usuarios Ana Maia, Rodrigo Mendes, Tatiana Vasconcelos:
Resp:

- Criei com o método POST {{baseUrl}}/user/createWithList

- Criei um array no Body com os dados para novo usuário, exemplo:

{                            
         "username": "amaia", 
         "firstName": "Ana",  
         "lastName": "Maia",  
         "email": "amaia@gmail.com", 
         "password": "teste@123", 
         "phone": "11988888888",
         "userStatus": "0"
 }, 
  • Para listar usuário cadastrado, usei o método GET com username de cada usuário já criado, dessa forma: {{baseUrl}}/user/amaia, resultando na resposta:
{
    "id": 12,
    "username": "amaia",
    "firstName": "Ana",
    "lastName": "Maia",
    "email": "amaia@gmail.com",
    "password": "teste@123",
    "phone": "11988888888",
    "userStatus": 0
}
  1. Crie os pets Snoopy (dog), Bichento (cat) e Perry (platypus) Resp:

- Para criar os pets, usei o método POST {{baseUrl}}/pet

- Para criar a categoria (dog,cat e platypus) e os nomes de cada animal (Snoopy, Bichento e Perry), adicionei duas variáveis em Pre-request Script. Isto facilita para que eu não preencha manualmente o nome dos animais e suas categorias. Com isso, resultou em:

let name = ["Snoopy", "Bichento","Perry"];
let categoria = ["Dog","Cat","Platypus"];

pm.variables.set("name",name[0]);
pm.variables.set("categoria", categoria[0]);

No Body chamei as duas variáveis name e categoria, que resultou em:

{
    "name": "{{name}}",
    "photoUrls": [
        "https://www.cobasi.com.br/"
    ],
    "id": "0",
    "category": {
        "id": "0",
        "name": "{{categoria}}"
    },
    "tags": [
        {
            "id": "0",
            "name": "{{categoria}}"
        }
    ],
    "status": "castrado"
}

O Response Body resulta em:

{
    "id": 112808,
    "category": {
        "id": 0,
        "name": "Dog"
    },
    "name": "Snoopy",
    "photoUrls": [
        "https://www.cobasi.com.br/"
    ],
    "tags": [
        {
            "id": 0,
            "name": "Dog"
        }
    ],
    "status": "castrado"
}

- Em "Tests" criei a variável petId que captura o ID do pet que será usado para atualizar o status Approved e Delivered quando consultados na store, dessa forma

let petId = pm.response.json().id;
pm.environment.set("petId",petId);

- Para criar cada pet, e gerar um novo id identificador do novo pet, alterei o valor do array de 0 a 2 [0].

3) Mude o status da ordem de venda do Perry e do Snoopy para "approved" e do Bichento para "delivered"

Resp:

- Criei o método POST {{baseUrl}}/store/order

- O método GET {{baseUrl}}/store/order/:orderId retorna se o status Delivered e Approved são enviados corretamente, usando id de cada pet, gerado anteriormente ao criar o pet:

Salvei estes ids na minha primeira consulta aos pets criados:

Perry => 154350062005095

Bichento => 154350062005114

Snoopy => 154350062005116

- O Response body resulta em:

Perry:
{
    "id": 6512767,
    "petId": 154350062005095,
    "quantity": 1,
    "shipDate": "2020-07-04T20:04:50.005+0000",
    "status": "approved",
    "complete": true
}

Bichento:
{
    "id": 6512768,
    "petId": 154350062005114,
    "quantity": 1,
    "shipDate": "2020-07-04T20:04:50.005+0000",
    "status": "approved",
    "complete": true
}

Snoopy:
{
    "id": 6512769,
    "petId": 154350062005116,
    "quantity": 1,
    "shipDate": "2020-07-04T20:04:50.005+0000",
    "status": "approved",
    "complete": true
}

4) Consulte as 3 ordens geradas

Resp:

- Para consulturar o status Delivered / Approved utilizei o método POST {{baseUrl}}/store/orderId

  • Esta é uma ordem que manipulei com status Approved, portanto:
{
    "petId": "154350062005095",
    "quantity": "1",
    "shipDate": "2020-07-04T23:13:55.005Z",
    "status": "Approved",
    "complete": "true"
}

E este é o response body:

{
    "id": 8919,
    "petId": 154350062005095,
    "quantity": 1,
    "shipDate": "2020-07-04T23:13:55.005+0000",
    "status": "Approved",
    "complete": true
}

- Para consultar a venda 8919 geradas, utilizo o método GET {{baseUrl}}/store/order/:orderId e verifico a minha ordem. A resposta deve ser com os mesmos dados listados acima, carregados no response body.

{
    "id": 8919,
    "petId": 154350062005095,
    "quantity": 1,
    "shipDate": "2020-07-04T23:13:55.005+0000",
    "status": "Approved",
    "complete": true
}

- Para gerar cada consulta de cada pet, devo manipular os dados através do meu petId.

- Para consultar petId 154350062005095, que corresponde ao Perry, clico em send e retorna:

{
    "id": 6512767,
    "petId": 154350062005095,
    "quantity": 1,
    "shipDate": "2020-07-04T20:04:50.005+0000",
    "status": "approved",
    "complete": true
}

- Para consultar o petId 154350062005114, que corresponde ao Bichento, clico em send e retorna:

{
    "id": 6512777,
    "petId": 154350062005114,
    "quantity": 1,
    "shipDate": "2020-07-03T20:04:55.005+0000",
    "status": "Delivered",
    "complete": true
}

- Para consultar o petId 154350062005116, que corresponde ao Snoopy, clico em send e retorna:

{
    "id": 6512769,
    "petId": 154350062005116,
    "quantity": 1,
    "shipDate": "2020-07-04T20:04:50.005+0000",
    "status": "approved",
    "complete": true
}

About

Testando API com Postman e documentação swagger