httparty nada mais é do que uma gem ruby que simplifica a manipulação de requisições e respostas REST, ou seja, ele gerará respostas para as requisições feitas.

REST — Representational State Transfer

Em português Transferência de Estado Representacional, é um estilo de arquitetura que define um conjunto de restrições e propriedades baseados em HTTP.

Então chega de teoria e vamos pra prática.

Pré requisitos

Como é uma gem, precisamos inserir no nosso arquivo GemFile, vamos aproveitar e inserir a também a gem faker quer serve para criar coisas falsas(nome, sobrenome, documento, endedreço e etc…), coisa linda não é ?

Após inserir e rodar o bundle install para instalar as gems e suas dependências, vamos requerir nossas gem no arquivo env.rb.

Pronto! nosso ambiente já está pronto para fazer testes de API.

Vamos realizar o primeiro teste realizando uma consulta usando o método ‘get’. Então primeiramente vamos escrever nossa funcionalidade em um novo arquivo com o nome de get.feature.

Após criar nossa feature vamos rodar o bundle exec cucumber -t @get para criar nossos step de teste e a seguinte saída será gerada:

Agora vamos implementar nossos steps, A sintaxe do http é basicamente:

Httparty . Método HTTP (“url”, opções)

E aceita os seguintes métodos http:

  • GET=> Retorna todos os registros
  • POST => Cadastra um novo registro
  • PUT => Altera os dados do registro de acordo com o ID
  • DELETE => Deleta o registro de acordo com o ID

Então vamos realizar nosso metódo get no nosso primeiro step e ficará mais ou menos da seguinte maneira:

Onde passamos o valor do HTTParty.get batendo no exemplo de API através do seguinte link: https://jsonplaceholder.typicode.com/posts para a variável @get_clients.

Nosso primeiro step está pronto, agora vamos para o segundo steps onde vamos validar o retorno:

Na segunda linha estamos “imprimindo” todos os registros

Na terceira linha estamos mostrando quantos registros retornaram = 100

Na quarta linha o retorno da mensagem = ok

E na quinta linha status code da requisição = 200

E na quinta linha estamos comparando o status code com o resultado esperado, se é igual a 200

Se rodarmos o teste novamente, o teste vai passar com sucesso e retornar tudo conforme descrito acima, é lindo ou não é ?

Existem vários status code, segue umlink bem legal com todos os status code:

Feito o método “get”, vamos dar mais um exemplo e fazer o método “post”. Então novamente vamos criar um novo arquivo post.feature.

Rodar bundle exec cucumber -t @post para gerar os steps

O post é um pouco diferente do get, pois o get só retorna e o post cadastra algo, então precisamos passar todas as informações de acordo com o contrato definido pela api, nesse caso vamos criar um novo cliente que possui id, nome, email e corpo. Pra nos ajudar vamos usar a gem faker para gerar dados falsos.

Então no primeiro step nos vamos montar o corpo da requisição que é no formato json e ficará da seguinte maneira:

Após configurar o corpo da requisição, informamos para o httparty que queremos uma requisição do tipo post passando o endereço o corpo e o cabeçalho da nossa api.

No segundo steps só vamos validar o retorno da requisição e ficará da seguinte maneira:

Na segunda linha estamos “imprimindo” o corpo da requisição que enviamos

Na terceira estamos “imprimindo” qual foi a mensagem de retorno = Created

E na quarta estamos validando se status code retornou conforme o esperado = 201 que é = Created.

E por hoje é isso…

Pra alegria de todos e felicidade geral da nação, o pai vai deixar o projeto final no git através do link:

https://github.com/pedrohjmartins/base_project_api.git

Thank you guys and see you next article

Engenheiro de teste de software, cervejeiro, churrasqueiro e pai. Sabe app funcionando, cerveja gelada, churrasco bem-feito, família reunida? Não gosto, eu amo.

Engenheiro de teste de software, cervejeiro, churrasqueiro e pai. Sabe app funcionando, cerveja gelada, churrasco bem-feito, família reunida? Não gosto, eu amo.