Para executar os testes localmente, estou utilizando o ServeRest
Link do Repo: https://github.com/ServeRest/ServeRest
ServeRest está disponível de forma online, no npm e no docker.
npm install
Para iniciar o serviço basta acessar a pasta ServeRest-trunk rodar o comando
npx serverest@latest
variáveis de ambiente e bash_profile - exemplo:
- Mac, Windows e Linux: https://www.liquidweb.com/kb/how-to-install-java-on-ubuntu-windows-and-macos
- Mac, Windows e Linux: https://www.baeldung.com/install-maven-on-windows-linux-mac
Crie um maven project ou use um pom.xml existente para fazer o download/instalação das dependências.
Clone project
- Clone este repositório para sua maquina usando http or ssh, por exemplo:
git clone https://github.com/rafaelbercam/boilerplate-api-test-rest-assured.git
- Instale todas as dependências (pom.xml) usando mvn install e execute os testes:
cd boilerplate-api-test-rest-assured
mvn install
Antes de rodar os testes voce vai precisar:
- Criar um arquivo
config.properties
dentro da pasta resources e inserir as variáveis de ambiente. - Arquivo de Exemplo:
config.properties.example
The valid values are below:
APP_URL=http://localhost:3000
USER=fulano@qa.com
PASSWORD=teste
Neste boilerplate o arquivo config.properties esta exposto, mas seguindo o guia de boas práticas
você deve adicionar o arquivo config.properties
no .gitignore
Rodar o comando
mvn install
Basta rodar o comando
mvn test -Dtest=AllIntegratedTests
O projeto esta dividido da seguinte maneira:
[test]
[java]
[br.com.restassrured]
[commons] -> Classes de configurações e do Request Specification do REST-assured
[data] -> Classes que retornam objetos para serem parseados nas requisições.
[requests] -> Classes que retornam métodos que disparam as requisições do REST-assured
[runner] - Classes que rodam suites de testes específicas usando o `@RunWith` do JUnit4
[tests] -> Arquivos de Teste no forma JUnit
[resources] -> Arquivo de configuração das variáveis de ambiente.
São classes que retornam objetos de acordo com os paramentros enviados em uma requisição.
Exemplo:
public class User {
private String nome;
private String email;
private String password;
private String administrador;
}
Em requests
, retornam a Response
da requisição do REST-assured.
Dessa foma o tipo retornado do método é do tipo Response
Basta fazer o import do Response.
import io.restassured.response.Response;
Exemplo da Classe:
public class LoginRequests {
public Response postLogin(){
DataLogin login = new DataLogin();
return given()
.spec(requestSpecification)
.body(login.getLogin(login)).
when()
.post("/login").
then().extract().response();
}
}
Em test
, poderão ser colocados os arquivos de teste no formato do JUnit.
Exemplo da classe:
public class Login {
private final LoginRequests request = new LoginRequests();
private static Response response;
@Test
public void postLogin(){
response = request.postLogin();
assertEquals(HttpStatus.SC_OK,response.statusCode());
assertEquals(
"Login realizado com sucesso",
response.getBody().jsonPath().get("message"));
}
}
Note como a resposta da requisição retorna um objeto do tipo Response
, foi necessário declarar
uma variável do tipo para recebe-la.