Olá a todos. Aos poucos estamos emergindo das sombras e continuando a série de artigos sobre nosso produto. Depois anterior artigo de revisão, recebemos muitos comentários (principalmente positivos), sugestões e relatórios de bugs. Hoje vamos mostrar TestMace em ação e você poderá apreciar alguns dos recursos do nosso aplicativo. Para uma imersão mais completa, aconselho consultar nossa documentação em http://docs-ru.testmace.com. Então vamos!
Instalação
Comecemos pela banalidade. O aplicativo está disponível e testado em três plataformas - Linux, Windows, MacOS. Você pode baixar o instalador do sistema operacional de seu interesse em nosso site. Para usuários Linux é possível instalar pacote instantâneo. Nós realmente esperamos que a Microsoft Store e a App Store em breve resolvam isso (é necessário? O que você acha?).
Cenário experimental
Escolhemos o seguinte cenário padrão como objeto de teste:
Login: usuário - admin, senha - senha
adicione uma nova entrada
Vamos verificar se o registro foi adicionado corretamente
Vamos testar em https://testmace-quick-start.herokuapp.com/. Isto é normal json-servidor, perfeito para testar esses aplicativos. Acabamos de adicionar autorização por token a todas as rotas do json-server e criamos um método de login para receber esse token. Iremos avançar progressivamente, melhorando gradativamente o nosso projeto.
Criando um projeto e tentando criar uma entidade sem autorização
Primeiro, vamos criar um novo projeto (Envie o->Novo projeto). Se você estiver iniciando o aplicativo pela primeira vez, um novo projeto será aberto automaticamente. Primeiro, vamos tentar fazer uma solicitação de criação de um novo registro (caso a criação de registros esteja disponível sem autorização). Selecione itens do menu de contexto do nó Projeto Adicionar nó -> Etapa de solicitação. Defina o nome do nó como criar-post. Como resultado, um novo nó será criado na árvore e uma guia para este nó será aberta. Vamos definir os seguintes parâmetros de solicitação:
Corpo da solicitação: json com valor {"title": "New testmace quick start post"}
Se você fez tudo corretamente, a interface ficará assim:
Porém, se tentarmos atender a solicitação, o servidor retornará um código 401 e sem autorização não obteremos nada neste servidor. Bem, em geral, como esperado).
Adicionando uma solicitação de autorização
Como já foi dito, temos um endpoint POST /login, que usa json como corpo da solicitação no formato: {"username": "<username>", "password": "<password>"}Onde username и password (novamente, do parágrafo introdutório acima) têm significados admin и password respectivamente. Em resposta, este endpoint retorna json como {"token": "<token>"}. Vamos usá-lo para autorização. Vamos criar Etapa de solicitação nó com nome entrar, atuará como um ancestral Projeto nó Usando arrastar e soltar, mova um determinado nó na árvore para cima do nó criar-post. Vamos definir os seguintes parâmetros para a solicitação recém-criada:
Corpo da solicitação: json com valor {"username": "admin", "password": "password"}
Vamos executar a solicitação e receber o ducentésimo código com o token na resposta. Algo assim:
Refatoração: removendo duplicação de domínio
Até agora as solicitações não estão vinculadas em um único script. Mas esta não é a única desvantagem. Se você olhar com atenção, notará que pelo menos o domínio está duplicado em ambas as solicitações. Não é bom. É hora de refatorar esta parte do script futuro, e as variáveis nos ajudarão com isso.
Numa primeira aproximação, as variáveis desempenham o mesmo papel que em outras ferramentas e linguagens de programação semelhantes - eliminando duplicação, aumentando a legibilidade, etc. Você pode ler mais sobre variáveis em nossa documentação. Neste caso, precisaremos de variáveis de usuário.
Vamos definir uma variável no nível do nó do projeto domain com valor https://testmace-quick-start.herokuapp.com. Para isso é necessário
Abra a aba com este nó e clique no ícone da calculadora no canto superior direito
Clique em + ADICIONAR VARIÁVEL
Insira o nome e o valor da variável
No nosso caso, a caixa de diálogo com a variável adicionada ficará assim:
OK. Agora, devido à herança, podemos utilizar esta variável em descendentes de qualquer nível de aninhamento. No nosso caso, estes são nós entrar и criar-post. Para usar uma variável em um campo de texto, você precisa escrever ${<variable_name>}. Por exemplo, o URL de login é convertido para ${domain}/login, respectivamente para criar-post o URL do nó será parecido com ${domain}/posts.
Assim, guiados pelo princípio DRY, melhoramos um pouco o cenário.
Salve o token em uma variável
Já que estamos falando de variáveis, vamos expandir um pouco esse assunto. No momento, em caso de login bem-sucedido, recebemos do servidor um token de autorização, que necessitaremos nas solicitações subsequentes. Vamos salvar esse token em uma variável. Porque o valor da variável será determinado durante a execução do script, usamos um mecanismo especial para isso - variáveis dinâmicas.
Primeiro, vamos realizar uma solicitação de login. Na aba Analisado resposta, passe o cursor sobre o token e no menu de contexto (que é chamado com o botão direito do mouse ou clicando no botão ...) selecione o item Atribuir à variável. Uma caixa de diálogo aparecerá com os seguintes campos:
Caminho - que parte da resposta é tomada (no nosso caso é body.token)
Valor atual — qual valor está ao longo do Caminho (no nosso caso, este é o valor do token)
Nome variável — nome da variável onde Valor atual será preservado. No nosso caso será token
Node
— em qual dos ancestrais a variável será criada Nome variável. Vamos selecionar Projeto
A caixa de diálogo concluída é semelhante a esta:
Agora toda vez que o nó é executado entrar variável dinâmica token será atualizado com o novo valor da resposta. E esta variável será armazenada em Projeto nó e, graças à herança, estará disponível para os descendentes.
Para acessar variáveis dinâmicas, você deve usar variável incorporada$dynamicVar. Por exemplo, para acessar um token armazenado, você precisa chamar ${$dynamicVar.token}.
Passamos o token de autorização para solicitações
Nas etapas anteriores recebemos o token de autorização e tudo o que precisamos fazer é adicionar um cabeçalho Authorization com significado Bearer <tokenValue> em todas as solicitações que requerem autorização, incluindo criar-post. Existem várias maneiras de fazer isso:
Copie manualmente o token e adicione um cabeçalho de autorização às solicitações de interesse. O método funciona, mas seu uso é limitado apenas a solicitações do tipo “feito e jogado fora”. Não é adequado para execução repetida de scripts
Usar o segundo método parece óbvio, mas no contexto deste artigo, esta abordagem é... desinteressante. Bem, realmente: o mecanismo de autorização mais menos é familiar para você de outras ferramentas (mesmo que tenhamos coisas como herança de autorização) e é improvável que levante questões.
Outra coisa são os cabeçalhos padrão! Resumindo, os cabeçalhos padrão são cabeçalhos HTTP herdados que são adicionados à solicitação por padrão, a menos que sejam explicitamente desativados. Usando esta funcionalidade, você pode, por exemplo, implementar autorização personalizada ou simplesmente se livrar da duplicação em scripts. Vamos usar esse recurso para passar um token nos cabeçalhos.
Anteriormente, salvamos prudentemente o token em uma variável dinâmica $dynamicVar.token no nível do nó do projeto. Tudo o que resta é fazer o seguinte:
Definir título padrão Authorization com valor Bearer ${$dynamicVar.token} no nível do nó do projeto. Para fazer isso, na interface Projeto do nó você precisa abrir uma caixa de diálogo com títulos padrão (botão Cabeçalhos no canto superior direito) e adicione um título correspondente. A caixa de diálogo com os valores preenchidos ficará assim:
Desative este cabeçalho da solicitação de login. Isso é compreensível: no momento do login ainda não temos token e iremos instalá-lo com esta solicitação. Portanto, na interface de login da solicitação na aba Cabeçalhos em torno de Herdado desmarque o cabeçalho Autorização.
Isso é tudo. Agora o cabeçalho de autorização será adicionado a todas as solicitações filhas do nó Projeto, exceto o nó login. Acontece que nesta fase já temos um script pronto e basta lançá-lo. Você pode executar o script selecionando Execute no menu de contexto do nó Projeto.
Verificando a exatidão da pós-criação
Nesta fase, nosso script pode fazer login e, usando um token de autorização, criar uma postagem. No entanto, precisamos ter certeza de que a postagem recém-criada tenha o nome correto. Ou seja, em essência, tudo o que resta é fazer o seguinte:
Envie uma solicitação para receber uma postagem por id,
Verifique se o nome recebido do servidor corresponde ao nome enviado ao criar a postagem
Vejamos o primeiro passo. Como o valor do id é determinado durante a execução do script, você precisa criar uma variável dinâmica (vamos chamá-la postId) do nó criar-post no nível do nó do projeto. Já sabemos como fazer isso, basta consultar a seção Salve o token em uma variável. Resta criar uma solicitação para receber uma postagem usando esse id. Para fazer isso, vamos criar um RequestStep obter postagem com os seguintes parâmetros:
Tipo de solicitação: GET
URL: ${domínio}/posts/${$dynamicVar.postId}
Para implementar a segunda etapa, precisamos nos familiarizar com afirmação nó. Um nó Assertion é um nó que permite escrever cheques para solicitações específicas. Cada nó Assertion pode conter diversas asserções (verificações). Você pode ler mais sobre todos os tipos de afirmações em nosso documentação. Nós vamos usar Compare afirmação com operador equal. Existem várias maneiras de criar asserções:
Longo. Crie manualmente um nó Assertion no menu de contexto do nó RequestStep. No nó Assertion criado, adicione a assertiva de interesse e preencha os campos.
Rápido. Crie um nó Assertion junto com uma asserção da resposta do nó RequestStep usando o menu de contexto
Vamos usar o segundo método. É assim que será no nosso caso.
Para quem não entende, eis o que está acontecendo:
Faça uma solicitação no nó obter postagem
Na guia Analisado atender, chame o menu de contexto e selecione Criar afirmação -> Comparar -> Igual
Parabéns, criamos nosso primeiro teste! Simples, não é? Agora você pode executar o script completamente e aproveitar o resultado. Só falta refatorar um pouco e retirar title em uma variável separada. Mas deixaremos isso para você como lição de casa)
Conclusão
Neste guia, criamos um cenário completo e ao mesmo tempo revisamos alguns recursos do nosso produto. É claro que não usamos todas as funcionalidades e nos artigos a seguir forneceremos uma visão geral detalhada dos recursos do TestMace. Fique atento!
PS Para quem tem preguiça de reproduzir todos os passos, gentilmente gravamos repositório com o projeto do artigo. Você pode abri-lo com Envie o -> Projeto aberto e selecione a pasta Projeto.