logo

Testando suas API's com Httparty

When you HTTParty, you must party hard!!

Rolou uma thread no dfteste sobre teste de API e eu lembrei que eu não traduzi um post feito para o http://lazytester.com sobre como usar httparty para testar suas api's.

(http://lazytester.com/mixing-your-cucumber-tests-with-api-helpers/)

Bom, eu vou encurtar um pouco o post (que falava como é possível misturar seus testes com interface e api e que automação teste não tem nada a ver com teste com uma ferramenta só...) por que não é necessário trazer toda essa bagagem agora.

Festa Duro! O básico do Httparty

Vamos lá!

gem install httparty
#sudo if you must

O httparty como vocês podem ver é uma gem ruby que simplifica a manipulação de request e response REST.

Para usar é bem simples:

require 'httparty'

Pronto agora você já pode usar

HTTParty.get("http://address.com.br/api", options)

A sintaxe do http é basicamente essa:

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

Ele aceita os seguintes métodos http:

HTTParty.get("http://address.com.br/api")
HTTParty.post("http://address.com.br/api")
HTTParty.put("http://address.com.br/api")
HTTParty.delete("http://address.com.br/api")

http://www.rubydoc.info/github/jnunemaker/httparty/HTTParty/Request)

Para métodos get e delete não existe parâmetros de envio mas para os o post,put e path existe opções de parâmetro que são as seguintes:

Cada opção (header,body e basic_auth) é um hash (array) onde você especifica os parâmetros a serem utilizados. O envio deles é opcional, ou seja, você pode fazer um post sem enviar nada caso a API esteja configurada para receber assim.

e o response?

O httparty não tem nenhum método que faça validações no response PORÉM nada te impede de usar os métodos de validação do rails, rpsec ou até mesmo escrever o seu.

Vamos ao exemplo de request:

formBody = { email: 'lazyleo@leonardobg.com.br'}
response = HTTParty.post("http://apifrisbypost.keeptesting.com.br/user", :body=> formBody)

Agora vamos ao response:

puts response
> {"email"=>"lazyleo@leonardobg.com.br", "_id"=>"22"}

Todo response vem HASH, ou seja, você pode acessar diretamente cada item.

 puts response['email']
>lazyleo@leonardobg.com.br

Se vem vários itens no hash com email, você pode criar um loop para acessar todos:

response.each do | item |
    puts item["email"]
end

Post pequeno, simples e direto.
Dúvidas, poste nos comentários :)

comments powered by Disqus