TestMace. Démarrage rapide


Bonjour à tous. Nous sortons lentement de l'ombre et continuons une série d'articles sur notre produit. AprÚs l'article précédent de la revue, nous avons reçu de nombreuses critiques (pour la plupart positives), des suggestions et des rapports de bugs. Aujourd'hui, nous montrerons TestMace en action et vous pourrez apprécier certaines des fonctionnalités de notre application. Pour une immersion plus complÚte, je vous conseille de vous référer à notre documentation sur http://docs-ru.testmace.com . Alors allons-y!


L'installation


Commençons par le banalisme. L'application est accessible et vraiment testée sur trois plateformes - Linux, Windows, MacOS. Vous pouvez télécharger le programme d'installation du systÚme d'exploitation concerné sur notre site Web . Pour Linuxoids, il est possible d'installer un package snap . Nous espérons vraiment que les mains du Microsoft Store et de l'App Store atteindront bientÎt (en avez-vous besoin? Qu'en pensez-vous?).


Scénario expérimental


En tant que sujet de test, nous avons sélectionné le scénario standard suivant:


  • connexion: utilisateur - administrateur, mot de passe - mot de passe
  • ajouter une nouvelle entrĂ©e
  • vĂ©rifier que la bonne entrĂ©e est ajoutĂ©e

Nous testerons sur https://testmace-quick-start.herokuapp.com/ . Il s'agit d'un serveur json standard, parfait pour tester de telles applications. Nous venons d'ajouter une autorisation de jeton à toutes les routes du serveur json et avons créé une méthode de connexion pour obtenir ce jeton. Nous allons avancer, améliorant progressivement notre projet.


Créer un projet et essayer de créer une entité sans autorisation


CrĂ©ez d'abord un nouveau projet ( Fichier -> Nouveau projet ). Si vous lancez l'application pour la premiĂšre fois, un nouveau projet s'ouvrira automatiquement. Tout d'abord, essayons de faire une demande pour crĂ©er un nouvel enregistrement (du coup, la crĂ©ation d'enregistrements est disponible sans autorisation). SĂ©lectionnez Ajouter un nƓud -> RequestStep dans le menu contextuel du nƓud Projet. DĂ©finissez le nom du nƓud sur create-post . En consĂ©quence, un nouveau nƓud sera créé dans l'arborescence et l'onglet de ce nƓud s'ouvrira. Nous dĂ©finissons les paramĂštres de requĂȘte suivants:




Cependant, si nous essayons de répondre à la demande, le serveur renverra un code 401 et sans autorisation, rien ne brille sur ce serveur. Eh bien, en général, comme prévu).


Ajouter une demande d'autorisation


Comme dĂ©jĂ  mentionnĂ©, nous avons un point de terminaison /login POST qui accepte un corps de demande json du formulaire: {"username": "<username>", "password": "<password>"} , oĂč username et password (Ă  nouveau de l'introduction ci-dessus) ont respectivement des valeurs d' admin et de password . En rĂ©ponse, ce point de terminaison renvoie json de la forme {"token": "<token>"} . Nous l'utiliserons pour autorisation. CrĂ©ez un nƓud RequestStep avec le nom de connexion , le nƓud Project agira comme l'ancĂȘtre. Utilisez le glisser-dĂ©poser pour dĂ©placer le nƓud donnĂ© dans l'arborescence plus haut que le nƓud de crĂ©ation de publication . DĂ©finissons les paramĂštres suivants pour la requĂȘte nouvellement créée:



Nous exécutons la demande et obtenons un code deux centiÚme avec un jeton dans la réponse. Quelque chose comme ça:



Refactoring: supprimer la duplication de domaine


Alors que les demandes ne sont pas connectĂ©es dans un seul script. Mais ce n'est pas le seul inconvĂ©nient. Si vous regardez attentivement, vous remarquerez qu'au moins le domaine est dupliquĂ© dans les deux requĂȘtes. Ce n'est pas bon. Il est temps de refactoriser cette partie du scĂ©nario futur et les variables nous y aideront.


Dans une premiĂšre approximation, les variables jouent le mĂȘme rĂŽle que dans d'autres outils et langages de programmation similaires - Ă©liminant la duplication, augmentant la lisibilitĂ©, etc. Vous pouvez en savoir plus sur les variables dans notre documentation . Dans ce cas, nous avons besoin de variables personnalisĂ©es.


Nous dĂ©finissons la variable de domain au niveau du projet du nƓud avec la valeur https://testmace-quick-start.herokuapp.com . Pour cela, il est nĂ©cessaire


  • Ouvrez un onglet avec ce nƓud et cliquez sur l'icĂŽne de la calculatrice en haut Ă  droite
  • Cliquez sur + AJOUTER UNE VARIABLE
  • Entrez le nom et la valeur de la variable
    Dans notre cas, la boßte de dialogue avec la variable ajoutée ressemblera à ceci:


Ok Maintenant, en raison de l'hĂ©ritage, nous pouvons utiliser cette variable dans les descendants de n'importe quel niveau d'imbrication. Dans notre cas, ce sont les nƓuds de connexion et de crĂ©ation de publication . Pour utiliser une variable dans le champ de texte, il est nĂ©cessaire d'Ă©crire ${<variable_name>} . Par exemple, l'URL de la connexion est convertie en ${domain}/login , respectivement, pour l'URL du nƓud create-post ressemblera Ă  ${domain}/posts .


Ainsi, guidés par le principe de SEC, nous avons légÚrement amélioré le scénario.


Nous enregistrons le jeton dans une variable


Puisque la conversation a commencé sur les variables, développons un peu ce sujet. Pour le moment, en cas de connexion réussie, nous recevons un jeton d'autorisation du serveur, dont nous aurons besoin dans les demandes suivantes. Enregistrons ce jeton dans une variable. Parce que la valeur de la variable sera déterminée lors de l'exécution du script, nous utilisons un mécanisme spécial pour cela - les variables dynamiques .


Pour commencer, nous exécuterons une demande de connexion. Dans l'onglet Analysé de la réponse, survolez le jeton et dans le menu contextuel (qui est appelé soit par le bouton droit de la souris, soit en cliquant sur le bouton ...), sélectionnez Attribuer à la variable . Une boßte de dialogue apparaßt avec les champs suivants:


  • Chemin - quelle partie de la rĂ©ponse est prise (dans notre cas, c'est body.token )
  • Valeur actuelle - quelle valeur se trouve le long du chemin d'accĂšs (dans notre cas, c'est la valeur du jeton)
  • Nom de variable - le nom de la variable oĂč la valeur actuelle sera stockĂ©e. Dans notre cas, ce sera token
  • Noeud - dans lequel des ancĂȘtres la variable Nom de variable sera créée. Choisissez un projet

La boßte de dialogue terminée est la suivante:



DĂ©sormais, Ă  chaque exĂ©cution du nƓud de connexion , le token dynamique sera mis Ă  jour avec la nouvelle valeur de la rĂ©ponse. Et cette variable sera stockĂ©e dans le nƓud Project et en raison de l'hĂ©ritage sera disponible pour les descendants.


Pour accéder aux variables dynamiques, vous devez utiliser la variable $dynamicVar . Par exemple, pour atteindre le jeton stocké, vous devez appeler ${$dynamicVar.token} .


Nous jetons le jeton d'autorisation dans les demandes


Dans les Ă©tapes prĂ©cĂ©dentes, nous avons reçu un jeton d'autorisation et tout ce qui doit ĂȘtre fait est d'ajouter l'en-tĂȘte d' Authorization avec la valeur Bearer <tokenValue> Ă  toutes les demandes qui nĂ©cessitent une autorisation, y compris create-post . Il existe plusieurs façons de procĂ©der:


  1. Copiez manuellement le jeton et ajoutez l'en-tĂȘte d'autorisation aux demandes d'intĂ©rĂȘt. La mĂ©thode fonctionne, mais son application n'est limitĂ©e que par les demandes du formulaire "fait et jetĂ©". Ne convient pas pour plusieurs scripts
  2. Utilisez la fonctionnalité d' autorisation .
  3. Utiliser des en-tĂȘtes par dĂ©faut

L'utilisation de la deuxiĂšme mĂ©thode semble Ă©vidente, cependant, dans le contexte de cet article, cette approche est ... sans intĂ©rĂȘt. Eh bien, en fait: le mĂ©canisme d'autorisation plus ou moins vous est familier des autres outils (mĂȘme si nous avons des choses comme l' hĂ©ritage des autorisations ) et il est peu probable qu'il soulĂšve des questions.


Une autre chose est les en-tĂȘtes par dĂ©faut! En un mot, les en-tĂȘtes par dĂ©faut sont les en-tĂȘtes HTTP hĂ©ritĂ©s des ancĂȘtres, qui sont ajoutĂ©s Ă  la demande par dĂ©faut, s'ils ne sont pas explicitement dĂ©sactivĂ©s. En utilisant cette fonctionnalitĂ©, par exemple, vous pouvez implĂ©menter une autorisation personnalisĂ©e ou simplement vous dĂ©barrasser de la duplication dans les scripts. Nous utiliserons cette fonctionnalitĂ© pour lancer le jeton dans les en-tĂȘtes.


Plus tĂŽt, nous avons prudemment enregistrĂ© le jeton dans la variable dynamique $dynamicVar.token au niveau du projet du nƓud. Il reste Ă  faire ce qui suit:


  1. DĂ©finissez l'en-tĂȘte d' Authorization par dĂ©faut avec une valeur de Bearer ${$dynamicVar.token} au niveau du projet du nƓud. Pour ce faire, dans l'interface Projet du nƓud, vous devez ouvrir une boĂźte de dialogue avec les en-tĂȘtes par dĂ©faut (le bouton En- tĂȘtes dans le coin supĂ©rieur droit) et ajouter l'en-tĂȘte correspondant. Une boĂźte de dialogue avec des valeurs remplies ressemblera Ă  ceci:
  2. DĂ©sactivez cet en-tĂȘte de la demande de connexion. C'est comprĂ©hensible: au moment de la connexion, nous n'avons toujours pas de token et nous allons simplement l'installer avec cette demande. Par consĂ©quent, dans l'interface de connexion de la demande dans l'onglet En- tĂȘtes de la zone HĂ©ritĂ© , dĂ©cochez l'en-tĂȘte Autorisation.

C’est tout. L'en-tĂȘte d'autorisation sera dĂ©sormais ajoutĂ© Ă  toutes les demandes qui sont des descendants du nƓud de projet, Ă  l'exception du nƓud de connexion. Il s'avĂšre qu'Ă  ce stade, nous avons un script prĂȘt et nous devons juste le dĂ©marrer. Vous pouvez exĂ©cuter le script en sĂ©lectionnant ExĂ©cuter dans le menu contextuel du nƓud Projet.


Vérification de l'exactitude de la création du poste


À ce stade, notre script peut se connecter et, Ă  l'aide d'un jeton d'autorisation, crĂ©er une publication. Cependant, nous devons nous assurer que le message nouvellement créé porte le nom correct. Autrement dit, il reste Ă  faire ce qui suit:


  • Envoyer une demande de publication par identifiant,
  • VĂ©rifiez que le nom provenant du serveur correspond au nom donnĂ© lors de la crĂ©ation de la publication

ConsidĂ©rez la premiĂšre Ă©tape. Une fois que la valeur id est dĂ©terminĂ©e lors de l'exĂ©cution du script, vous devez crĂ©er une variable dynamique (appelons-la postId ) Ă  partir du nƓud create-post au niveau du projet du nƓud. Nous savons dĂ©jĂ  comment faire cela, il suffit de passer Ă  la section Enregistrer le jeton dans une variable . Il ne reste plus qu'Ă  crĂ©er une demande de publication sur cet identifiant. Pour ce faire, crĂ©ez un get-post RequestStep avec les paramĂštres suivants:


  • Type de demande: GET
  • URL: $ {domaine} / posts / $ {$ dynamicVar.postId}

Pour implĂ©menter la deuxiĂšme Ă©tape, nous devons nous familiariser avec le nƓud Assertion . Le nƓud d'assertion est un nƓud qui vous permet d'Ă©crire des chĂšques pour des demandes spĂ©cifiques. Chaque nƓud d'assertion peut contenir plusieurs instructions (contrĂŽles). Vous pouvez en savoir plus sur tous les types d'assertions dans notre documentation . Nous utiliserons l'assertion Compare avec l'opĂ©rateur equal . Il existe plusieurs façons de crĂ©er des assertions:


  1. Long. Manuellement Ă  partir du menu contextuel du nƓud RequestStep, crĂ©ez un nƓud Assertion. Dans le nƓud créé par Assertion, ajoutez l'assertion d'intĂ©rĂȘt et remplissez les champs.
  2. Vite. CrĂ©ez un nƓud d'assertion avec une assertion Ă  partir de la rĂ©ponse RequestStep du nƓud Ă  l'aide du menu contextuel

Nous utiliserons la deuxiÚme méthode. Voici à quoi il ressemblera pour notre cas.



Pour ceux qui ne comprennent pas, les événements suivants se produisent:


  1. Faire une demande dans le nƓud get-post
  2. Dans l'onglet AnalysĂ© de la rĂ©ponse, appelez le menu contextuel et sĂ©lectionnez CrĂ©er une assertion -> Comparer -> Égal

Félicitations, nous avons créé le premier test! C'est simple, non? Vous pouvez maintenant exécuter le script complÚtement et profiter du résultat. Il reste à refactoriser un peu et à mettre le title dans une variable distincte. Mais nous vous laissons les devoirs)


Conclusion


Dans ce guide, nous avons créé un script complet et en mĂȘme temps passĂ© en revue certaines des fonctionnalitĂ©s de notre produit. Bien sĂ»r, nous n'avons pas utilisĂ© toutes les fonctionnalitĂ©s et dans les articles suivants, nous effectuerons un examen dĂ©taillĂ© des capacitĂ©s de TestMace. Restez Ă  l'Ă©coute!


PS Pour ceux qui sont trop paresseux pour reproduire toutes les étapes, nous avons gentiment coupé le référentiel avec le projet de l'article. Vous pouvez l'ouvrir en utilisant Fichier -> Ouvrir le projet et sélectionner le dossier Projet.

Source: https://habr.com/ru/post/fr458964/


All Articles