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:
- O que é uma requisição DELETE?
- 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:
- Os dados excluídos usando uma solicitação DELETE não são reversíveis, portanto, devem ser tratados com cuidado.
- Não é considerado um método seguro, pois pode excluir diretamente o recurso do banco de dados, causando conflitos no sistema.
- 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 |
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
- Iniciar o serviço de e-commerce RESTful.
- Usando uma solicitação POST, criar alguns pedidos no sistema.
- Excluir o pedido com
order_id
“1” usando uma solicitação DELETE. - 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:
- Adicione novos pedidos usando a solicitação POST.
- Chame a API
/auth
para gerar o token. - Chame o endpoint da API
/deleteOrder/
com o token e oorder_id
para deletar o pedido. - 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.
public void testShouldDeleteTheOrder() {
final APIResponse authResponse = this.request.post("/auth", RequestOptions.create().setData(getCredentials()));
final JSONObject authResponseObject = new JSONObject(authResponse.text());
final String token = authResponseObject.get("token").toString();
final int orderId = 1;
final APIResponse response = this.request.delete("/deleteOrder/" + orderId, RequestOptions.create()
.setHeader("Authorization", token));
assertEquals(response.status(), 204);
}
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.
<suite name="Restful ECommerce Test Suite">
<test name="Testing Happy Path Scenarios of Creating and Updating Orders">
<classes>
<class name="io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests">
<methods>
<include name="testShouldCreateNewOrders"/>
<include name="testShouldDeleteTheOrder"/>
</methods>
</class>
</classes>
</test>
</suite>
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
- Excluir um pedido válido com
order_id
“1.” - Usando a API GET
/getOrder
, tente recuperar o pedido comorder_id
“1.” - 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
.
public void testShouldNotRetrieveDeletedOrder() {
final int orderId = 1;
final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("id", orderId));
assertEquals(response.status(), 404);
final JSONObject jsonObject = new JSONObject(response.text());
assertEquals(jsonObject.get("message"), "No Order found with the given parameters!");
}
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.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Restful ECommerce Test Suite">
<test name="Testing Happy Path Scenarios of Creating and Updating Orders">
<classes>
<class name="io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests">
<methods>
<include name="testShouldCreateNewOrders"/>
<include name="testShouldDeleteTheOrder"/>
<include name="testShouldNotRetrieveDeletedOrder"/>
</methods>
</class>
</classes>
</test>
</suite>
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