Partie 9 : Réduire le code dupliqué avec des objets app

Dans l'automatisation de tests nous utilisons souvent les objets app pour abstraire le code. Cela réduit la duplication de code et de repères. Si nous avons besoin de changer une section de code commune, nous pouvons la changer juste dans un seul objet app, plutôt que d'avoir à la modifier dans 10 ou 20 fichiers de test. Cet article donne les bases de l'utilisation des objets app.

Objets app : bien démarrer

L'objet app est une classe Python qui contient des méthodes et des propriétés qui représentent les actions sur une page. Regardons comment nous pouvons utiliser ceci dans un exemple théorique.

homepage.py

Voici un cadre que nous pouvons utiliser pour l'app Homepage avec un peu de pseudo-code.

class Homepage:
        __init__(self, marionette):
                # Marionette is passed in so that the object can use it
                self.marionette = marionette
 
        def switch_to_homepage_frame(self):
                # Code for switching to System then to Homepage frame

        def tap_contacts_icon(self):
                # Code to tap the icon
                # Switch to Contacts frame
                # Now we return the Contacts app object as it has focus
                from contacts import Contacts
                return Contacts(self.marionette)

contacts.py

Et voici ce que nous pouvons utiliser pour l'app Contacts, avec encore du pseudo-code.

class Contacts:
        _new_contact_button = (By.ID, ‘id’)
 
        def tap_new_contact(self):
                # Tap new contact icon
                # Wait for event
 
        def type_given_name(self, name_string):
                # element.send_keys(name_string)

test_contacts.py

Pour comprendre comment cela fonctionne dans le contexte d'un test, voici un exemple rapide qui utilise la classe Homepage :

from homepage import Homepage

def test_add_contact(self):
        homepage = Homepage(self.marionette)
        homepage.switch_to_homepage_frame()
         
contacts = homepage.tap_contacts_icon()
contacts.tap_new_contact()

Mettre à jour vos tests

À partir de cela, nous voudrions vous pousser à mettre à jour tous vos fichiers de test pour utiliser le nouveau système d'objets app.

C'est une tâche difficile si vous n'êtes pas familier avec les structures de classes Python, vous aurez peut-être besoin de consulter quelques livres pour avoir des références et des exemples de code.

Quand vous aurez fini, idéalement vous aurez une séparation claire entre les fichiers de test :

  1. TestBase contiendra les méthodes setUp() et tearDown()
  2. Les objets app contiendront les interactions et repères des pages
  3. Vos fichiers de test contiendront uniquement les étapes de test.

Bonne chance !

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : jwhitlock, SphinxKnight, Goofy, J.DMB
 Dernière mise à jour par : jwhitlock,