Os testes de API ganharam muito impulso nos últimos dias. Como a interface do usuário não está envolvida, é muito mais fácil e rápido testar. Essa é a razão pela qual o teste de API é considerado 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 obtenham feedback mais rápido sobre as compilações.
Neste blog, discutiremos e aprenderemos sobre requisições de API DELETE e como tratá-las usando Playwright Java para testes de automação, cobrindo os seguintes pontos:
- O que é uma requisição DELETE?
- Como você testa APIs DELETE usando Playwright Java?
Introdução
É recomendável 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 comércio eletrônico que são gratuitas para uso e oferecem várias APIs relacionadas à funcionalidade de gerenciamento de pedidos, permitindo-nos criar, recuperar, atualizar e excluir pedidos.
Esta 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 diferentes estados. Por exemplo, na primeira instância, quando o DELETE é chamado, ele retornará o Código de Status 204 informando que o recurso foi excluído, e se o DELETE for chamado novamente no mesmo recurso, pode retornar um 404 NOT FOUND, pois o recurso dado já foi excluído.
O seguinte é um exemplo do endpoint da API DELETE do projeto de e-commerce 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 foi fornecido, ele mostrará a seguinte resposta:
Status Code | Description |
---|---|
400 |
Falha ao autenticar o token |
404 |
Nenhum pedido com o |
403 | Token está ausente na solicitação |
Como Testar APIs DELETE Usando 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 a perda de dados não intencionais e inconsistências, uma vez 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, utilizaremos o /deleteOrder/{id}
para excluir um pedido existente do sistema.
Cenário de Teste 1: Excluir um Pedido Válido
- Inicie o serviço de e-commerce RESTful.
- Usando uma solicitação POST, crie alguns pedidos no sistema.
- Exclua o pedido com
order_id
“1” usando a solicitação DELETE. - Verifique 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 requisição POST.
- Faça uma chamada para a API
/auth
para gerar o token. - Faça uma chamada para 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 utilizado posteriormente na requisição 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 requisições POST usando Playwright Java.
Após os pedidos serem gerados, o próximo passo é fazer a requisiçã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 como 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, isso é a única coisa que pode ser verificada.
Execução do Teste
Vamos criar um novo 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>
Primeiro, o testShouldCreateNewOrders()
método de teste será executado, e ele criará novos pedidos. Em seguida, o testShouldDeleteTheOrder()
método de teste será executado para testar a API de exclusão de pedidos.
A seguinte captura de tela 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 corretamente excluído escrevendo um novo teste que chamará o endpoint da API GET /getOrder
com o order_id
excluído.
Cenário de Teste 2: Recuperar o Pedido Excluído
- Exclua 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 do 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 para este cenário é bastante simples. Vamos executar a API GET /getOrder
para buscar o pedido deletado com order_id
“1.”
Uma asserção é aplicada em seguida 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 pedidos 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 todos os três testes foram executados com sucesso, e a API DELETE funcionou conforme o esperado.
Resumo
Requisições da API DELETE permitem a exclusão do recurso do sistema. Como a exclusão é uma função importante do CRUD, é fundamental testá-la e verificar se o sistema está funcionando conforme o esperado. No entanto, deve-se notar que a exclusão é um processo irreversível, portanto deve sempre ser usada com cautela.
De acordo com minha experiência, é uma boa abordagem fazer uma chamada GET à API após executar a solicitação DELETE para verificar se o recurso especificado foi excluído do sistema com sucesso.
Boas testes!
Source:
https://dzone.com/articles/test-delete-requests-for-api-testing-with-playwright-java