Automatizando os testes da sua API, da teoria a prática com RestSharp e C# — Parte III
Retomando nossa série de publicações a respeito de testes de API utilizando RestSharp com C#, iremos executar uma simples requisição do método GET. Para realizarmos essa simples operação sugiro que já tenham o ambiente configurado conforme descrito nessa última publicação.
Para um breve entendimento irei separar em blocos nosso código para ficar de fácil compreensão.
Vamos utilizar a classe chamada RestClient, essa classe nós podemos obter usando a referência que instalamos em nossa postagem anterior, que nada mais é do que o RestSharp do NuGet que fizemos Download. Como podemos ver ,nesse construtor podemos fornecer nossa URL que iremos utilizar para realizar nossos testes.
Nosso bloco acima vamos utilizar uma classe de requisição, e dentro dessa classe de requisição de serviço podemos passar a URL e também o método que queremos fazer a nossa requisição, lembrando que pode ser um GET, POST, DELETE entre outros métodos existentes.
1. Nesse trecho estamos fornecendo o segmento da nossa URL, nesse caso estamos informando nosso ID que desejamos retornar, então ele irá passar o valor de 1;
2. No seguinte estamos fornecendo qual o método que iremos utilizar para nossos testes que no caso será o GET;
Nesse ponto acima conseguimos executar nossa requisição e obter nosso conteúdo que nada mais é do que a resposta do método GET.
1. Content se trata da propriedade responsável por recuperar nossos dados e assim fazermos nossas validações;
Executando nosso teste
Para realizar a execução dos nossos testes nossa classe necessita ter alguns requisitos mínimos como:
- O atributo [TestClass] pois é obrigatório para qualquer classe que contenha métodos de testes unitários que desejamos rodar no Test Explorer, para saber mais a respeito do Test Explorer clique aqui;
- Escrevemos métodos de testes e caso desejamos executar no Test Explorer nossa classe deverá também ter o atributo [TestMethod];
Para visualizarem o Test Explore cliquem em View → Test Explorer ou vocês podem utilizar o atalho Ctrl + E.
Para executarmos nosso teste basta clicarmos na opção marcada na imagem e nosso teste será executado, caso não tenhamos nenhum problema veremos que nosso teste ficará verde.
O simples fato do nosso teste ter sido executado com sucesso não quer dizer que retornou os dados que gostaríamos para isso vamos validar que nossa requisição está de acordo com o desejado.
Para validarmos o que está sendo retornado antes de executarmos o nosso teste, primeiro adicionei um breakpoint na linha 28 do nosso código e executei nosso teste em Debug, para quem não conhece a respeito de breakpoint clique aqui.
Quando executarmos nosso teste notaremos que a execução irá parar na linha 28 e com isso poderemos visualizar o que está sendo retornado do nosso método GET.
Mas para conseguirmos visualizar isso é necessário fazermos a deserialização ou seja precisamos informar que queremos visualizar em um formato JSON e com isso conseguiremos fazer nossas asserções para garantir que o conteúdo retornado está de acordo com o desejado.
No nosso primeiro artigo temos uma breve explicação sobre desserialização, caso não visualizaram podem clicar aqui. Seguindo para nossas validações finais realizei a instalação de mais um framework o FluentAssertions.
Bom, para garantirmos que nossa requisição ocorreu com sucesso ela deverá nos retornar o código HTTP 200 isso indica que a requisição foi bem sucedida, mas prestem atenção pois não garante que nossos dados estão corretos, então o nosso trecho de código responsável por essa validação está logo abaixo.
Nossa próxima validação será a “marca” que será retornada, lembram que mais acima colocamos um breakpoint para visualizarmos nossos dados, pensem que não teremos um breakpoint ali para sempre pois nosso testes precisam ficar sendo validados de forma automatizada e com um breakpoint ali não será possível, pois toda vez que passar por aquele ponto irá parar a nossa execução.
Para nossa outra validação usaremos o TestTools do Visual Studio. Agora eu quero garantir que nosso método GET está retornando na marca por exemplo o valor “Audi”, então se olharmos para o trecho de código abaixo estou praticamente dizendo que é verdadeiro que na “marca” contém uma informação que corresponde ao nome de “Audi”.
Vamos então executar nosso código e ver o que acontece? Caso não tenhamos cometido nenhum erro no momento de escrevermos nosso teste deveremos visualizar o seguinte resultado:
Legal né? Nossa validação ocorreu de acordo com o esperado, mas podemos inserir um outro valor ao invés de “Audi” para ver se nosso teste irá falhar, então vamos lá.
Reparem que coloquei um valor totalmente diferente “fdasfsdfasd” e a execução do nosso teste falhou inclusive nos indicando a linha 32 onde possivelmente estará nosso erro.
Galera, espero que tenham compreendido e se divertido. Teremos mais um próximo artigo e último onde falaremos do método POST.
That’s all folks.