Como Testar Requisições DELETE para Testes de API com Playwright Java

Os testes de API ganharam muito impulso atualmente. Como a interface do usuário não está envolvida, é muito mais fácil e rápido testar. Esta é a razão pela qual os testes de API são considerados a primeira escolha para realizar testes de ponta a ponta do sistema. Integrar os testes automatizados de API com os pipelines de CI/CD permite que as equipes recebam feedback mais rápido sobre as compilações.

Neste blog, discutiremos e aprenderemos sobre requisições API DELETE e como manipulá-las usando Playwright Java para testes de automação, cobrindo os seguintes pontos:

  1. O que é uma requisição DELETE?
  2. Como testar APIs DELETE usando Playwright Java?

Começando

É recomendado que você confira o blog tutorial anterior para aprender sobre os detalhes relacionados a pré-requisitos, configuração, e configuração.

Aplicação em Teste

Usaremos as APIs RESTful de e-commerce que são gratuitas e oferecem várias APIs relacionadas à funcionalidade de gerenciamento de pedidos, permitindo-nos criar, recuperar, atualizar e excluir pedidos.

Essa aplicação pode ser configurada localmente usando Docker ou NodeJS.

O que é uma requisição DELETE?

Uma solicitação de API DELETE exclui o recurso especificado do servidor. Geralmente, não há corpo de resposta nas solicitações DELETE.

O recurso é especificado por um URI, e o servidor o exclui permanentemente. As solicitações DELETE não são consideradas seguras nem idempotentes, pois podem causar efeitos colaterais no servidor, como a remoção de dados de um banco de dados.

As seguintes são algumas das limitações das solicitações DELETE:

  1. Os dados excluídos usando uma solicitação DELETE não são reversíveis, portanto, devem ser tratados com cuidado.
  2. Não é considerado um método seguro, pois pode excluir diretamente o recurso do banco de dados, causando conflitos no sistema.
  3. Não é um método idempotente, o que significa que chamá-lo várias vezes para o mesmo recurso pode resultar em estados diferentes. Por exemplo, na primeira instância, quando DELETE é chamado, ele retornará o Código de Status 204 informando que o recurso foi excluído, e se DELETE for chamado novamente no mesmo recurso, pode retornar um 404 NÃO ENCONTRADO, pois o recurso fornecido já foi excluído.

O seguinte é um exemplo do endpoint da API DELETE do projeto de comércio eletrônico RESTful. 

DELETE /deleteOrder/{id} :  Exclui um Pedido pelo ID

Esta API requer que o order_id seja fornecido como Parâmetro de Caminho para excluir o respectivo pedido do sistema. Não é necessário fornecer um corpo de solicitação nesta solicitação de API DELETE. No entanto, como medida de segurança, o token deve ser fornecido como um cabeçalho para excluir o pedido.

Uma vez que a API é executada, ela exclui o pedido especificado do sistema e retorna o Código de Status 204.

No caso em que o pedido não é encontrado, ou o token não é válido ou não é fornecido, ele mostrará a seguinte resposta:

Status Code Description
400

Falha ao autenticar o token

404

Nenhum pedido com o order_id fornecido foi encontrado no sistema

403 O token está ausente na requisição

Como Testar APIs DELETE Usando o Playwright Java

Testar APIs DELETE é um passo importante para garantir a estabilidade e confiabilidade da aplicação. A implementação correta das APIs DELETE é essencial para verificar perdas de dados e inconsistências indesejadas, já que as APIs DELETE são responsáveis por remover os recursos do sistema.

Nesta demonstração de teste de APIs DELETE usando Playwright Java, estaremos utilizando o /deleteOrder/{id} para excluir um pedido existente do sistema.

Cenário de Teste 1:  Excluir um Pedido Válido

  1. Iniciar o serviço de e-commerce RESTful.
  2. Usando uma solicitação POST, criar alguns pedidos no sistema.
  3. Excluir o pedido com order_id “1” usando uma solicitação DELETE.
  4. Verificar se o Código de Status 204 é retornado na resposta.


Implementação do Teste

Os seguintes passos devem ser realizados para implementar o cenário de teste:

  1. Adicione novos pedidos usando a solicitação POST.
  2. Chame a API /auth para gerar o token.
  3. Chame o endpoint da API /deleteOrder/ com o token e o order_id para deletar o pedido.
  4. Verifique se o Código de Status 204 é retornado na resposta.

Um novo método de teste, testShouldDeleteTheOrder(), é criado na classe de teste existente HappyPathTests. Este método de teste implementa os três passos acima para testar a API DELETE.

Java

 

A API POST /auth será chamada primeiro para gerar o token. O token recebido na resposta é armazenado na variável token para ser usado posteriormente na solicitação da API DELETE.

Em seguida, novos pedidos serão gerados usando o método testShouldCreateNewOrders(), que já foi discutido em o tutorial anterior, onde falamos sobre testar solicitações POST usando Playwright Java.

Depois que os pedidos forem gerados, o próximo passo é fazer a solicitação DELETE com o order_id válido que deletaria o pedido específico.


Vamos deletar o pedido com o order_id “1” usando o delete() método fornecido pelo framework Playwright.

Após a exclusão do pedido, o Código de Status 204 é retornado em resposta. Uma asserção será realizada no Código de Status para verificar se a ação de exclusão foi bem-sucedida. Como nenhum corpo de solicitação é retornado na resposta, esta é a única coisa que pode ser verificada.

Execução do Teste

Iremos criar um novo arquivo testng.xml chamado testng-restfulecommerce-deleteorders.xml para executar os testes na ordem dos passos que discutimos na implementação do teste.

XML

 

Primeiramente, o método de teste testShouldCreateNewOrders() será executado e criará novos pedidos. Em seguida, o método de teste testShouldDeleteTheOrder() será executado para testar a API de exclusão de pedidos. 

A captura de tela a seguir da execução do teste realizada usando o IntelliJ IDE mostra que os testes foram executados com sucesso.

Agora, vamos verificar se o pedido foi excluído corretamente escrevendo um novo teste que chamará a API GET /getOrder com o order_id excluído.

Cenário de Teste 2:  Recuperar o Pedido Excluído

  1. Excluir um pedido válido com order_id “1.”
  2. Usando a API GET /getOrder, tente recuperar o pedido com order_id “1.”
  3. Verifique se o Código de Status 404 é retornado com a mensagem “Nenhum pedido encontrado com os parâmetros fornecidos!” na resposta.

Implementação de Teste

Vamos criar um novo método de teste, testShouldNotRetrieveDeletedOrder(), na classe existente HappyPathTests.

Java

 

A implementação do teste deste cenário é bastante simples. Vamos executar a API GET /getOrder para buscar o pedido excluído com order_id “1.”

Em seguida, é aplicada uma asserção para verificar se a API GET deve retornar o Código de Status 404 na resposta com a mensagem “Nenhum pedido encontrado com os parâmetros fornecidos!”

Este teste garante que a API de exclusão de pedido funcionou corretamente e que o pedido foi removido do sistema.

Execução do Teste

Vamos atualizar o arquivo testng.xml e adicionar este cenário de teste no final após o teste de exclusão.

Java

 

Agora, os três testes devem ser executados em sequência. O primeiro criará pedidos; o segundo excluirá o pedido com order_id “1”; e o último teste acessará a API GET para buscar o pedido com order_id “1” retornando o Código de Status 404.

A captura de tela acima mostra que os três testes foram executados com sucesso e a API DELETE funcionou conforme o esperado.

Resumo

As solicitações de API DELETE permitem a exclusão do recurso do sistema. Como a exclusão é uma função CRUD importante, é importante testá-la e verificar se o sistema está funcionando conforme o esperado. No entanto, deve-se observar que o DELETE é um processo irreversível, portanto, deve ser sempre usado com cautela.

De acordo com a minha experiência, é uma boa abordagem fazer a solicitação GET após executar a solicitação DELETE para verificar se o recurso especificado foi excluído do sistema com sucesso.

Feliz teste!

Source:
https://dzone.com/articles/test-delete-requests-for-api-testing-with-playwright-java