Maison >développement back-end >Tutoriel Python >Les transactions de page comme nouvelle façon d'organiser l'automatisation de vos tests

Les transactions de page comme nouvelle façon d'organiser l'automatisation de vos tests

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 10:13:091001parcourir

Page Transactions as a new way to organize your testing automation Photo de Mateus Campos Felipe

L'ibis écarlate vibrant ( Eudocimus ruber), également connu sous le nom d'ibis rouge, est un membre frappant de la famille des oiseaux Threskiornithidae. Cette espèce aviaire tropicale orne les paysages d’Amérique du Sud et de certaines parties des Caraïbes. Bien que sa forme reflète celle des autres espèces d'ibis, son brillant plumage écarlate le distingue. Symbole de fierté nationale, c'est l'un des deux oiseaux nationaux de Trinité-et-Tobago, et son nom tupi-guarani, « guará », est même incorporé dans les noms de plusieurs municipalités côtières brésiliennes.

Guará : une implémentation Python du modèle de transactions de page

Guará, une bibliothèque Python, incarne le modèle de conception Page Transactions. Il s'agit moins d'un outil que d'un paradigme de programmation flexible applicable à divers pilotes d'automatisation au-delà de Selenium, englobant Linux, Windows et l'automatisation mobile.

L'objectif principal de ce modèle est de rationaliser l'automatisation des tests. S'inspirant des objets de page, des actions d'application et du scénario, Guará se concentre sur les actions des utilisateurs (transactions) au sein d'une application, telles que la connexion, la déconnexion ou la soumission de formulaires.

Cette approche améliore la lisibilité, la maintenabilité et l'adaptabilité du code de test d'automatisation sans nécessiter de nouveaux outils ou des abstractions complexes. Un avantage clé est sa nature indépendante du conducteur ; les testeurs ne sont pas obligés d'utiliser Selenium. Guará s'intègre parfaitement à Helium, Dogtail, PRA Python, Playwright ou tout autre pilote préféré. Aucun plugin supplémentaire ou connaissance spécialisée n'est nécessaire.

Pour réitérer : Guará est une implémentation Python du modèle de conception Page Transactions, donnant la priorité au modèle plutôt qu'à un outil autonome.

Guará utilise le modèle de commande (GoF) pour regrouper les interactions des utilisateurs (appuis sur des boutons, saisie de texte) en transactions. Bien qu'il soit qualifié de framework, ce n'est pas un nouvel outil.

Au lieu de se concentrer sur des éléments individuels de l'interface utilisateur, Guará met l'accent sur le parcours de l'utilisateur. La complexité est encapsulée dans les transactions, ce qui donne lieu à des instructions de test qui se lisent comme du langage naturel. Les testeurs peuvent également créer et intégrer des assertions personnalisées.

Guará en action : un exemple de changement de langue

Cet exemple montre un utilisateur qui change de langue sur une page Web :

<code class="language-python">from selenium import webdriver
from guara.transaction import Application
from guara import it, setup
import home

def test_language_switch():
    app = Application(webdriver.Chrome())

    # Open the application
    app.at(setup.OpenApp, url="https://example.com/")

    # Change language and assert
    app.at(home.ChangeToPortuguese).asserts(it.IsEqualTo, "Conteúdo em Português")
    app.at(home.ChangeToEnglish).asserts(it.IsEqualTo, "Content in English")

    # Close the application
    app.at(setup.CloseApp)</code>

Chaque transaction réside dans sa propre classe (par exemple, ChangeToPortuguese), s'étendant AbstractTransaction. Les testeurs remplacent simplement la méthode do ; Guará s'occupe du reste.

<code class="language-python">from guara.transaction import AbstractTransaction

class ChangeToPortuguese(AbstractTransaction):
    def do(self, **kwargs):
        self._driver.find_element(By.CSS_SELECTOR, ".btn-pt").click()
        return self._driver.find_element(By.CSS_SELECTOR, ".content").text</code>

Les journaux post-test affichent les transactions et les assertions :

<code>test_demo.py::test_language_switch 
2025-01-24 21:07:10 INFO Transaction: setup.OpenApp
2025-01-24 21:07:10 INFO  url: https://example.com/
2025-01-24 21:07:14 INFO Transaction: home.ChangeToPortuguese
2025-01-24 21:07:14 INFO Assertion: IsEqualTo
2025-01-24 21:07:14 INFO  Actual Data: Conteúdo em Português
2025-01-24 21:07:14 INFO  Expected: Conteúdo em Português
2025-01-24 21:07:14 INFO Transaction: home.ChangeToEnglish
2025-01-24 21:07:14 INFO Assertion: IsEqualTo
2025-01-24 21:07:14 INFO  Actual Data: Content in English
2025-01-24 21:07:14 INFO  Expected: Content in English
2025-01-24 21:07:14 INFO Transaction: setup.CloseApp</code>

Les appareils (installation/démontage) gèrent l'initialisation et l'achèvement des tests. Les outils de test standards comme pytest ou unittesting sont entièrement compatibles.

Avantages de l'utilisation du guará

  • Réutilisabilité améliorée du code : Chaque classe représente une transaction utilisateur complète.
  • Lisibilité améliorée : Le code ressemble à un anglais simple, ce qui facilite la collaboration.
  • Assertions personnalisables : Créez et partagez des assertions personnalisées.
  • Agnosticisme du pilote : Fonctionne avec divers outils d'automatisation au-delà de Selenium.
  • Application polyvalente : Automatise les API REST, les tests unitaires, les tests de bureau et mobiles.

Démarrer avec Guará

  1. Installer : pip install guara
  2. Créez des transactions en utilisant AbstractTransaction.
  3. Utilisez Application, at et asserts pour appeler des transactions.
  4. Exécutez des tests avec journalisation détaillée à l'aide de Pytest : python -m pytest -o log_cli=1 --log-cli-level=INFO

Conclusion

Guará propose une nouvelle approche de l'organisation du code de test, en donnant la priorité à la lisibilité, à la maintenabilité et à l'indépendance du pilote. Il favorise la collaboration et permet la création et le partage d'assertions personnalisées. Essayez Guará !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:ElasticTransform dans PyTorchArticle suivant:ElasticTransform dans PyTorch