Bootcamp de logique · Leçon 5 sur 5

Les essentiels de la POO — classes, héritage, méthodes magiques, décorateurs

Le vrai code SDET vit dans des classes — page objects, clients d'API, cas de test de base. Voici les essentiels que vous utiliserez vraiment, sans théorie lourde.

Par Shahriyar · Mis à jour

L'idée, en une ligne

Une classe est un plan. À partir d'elle vous fabriquez des objets qui portent leurs propres données et leurs propres actions. Maîtrisez quatre petits morceaux et vous pourrez lire presque n'importe quel framework de test.

Les quatre morceaux

Voyez-le à l'œuvre

▸ try it
import functools

# Decorator that retries a flaky step
def retry(times):
    def outer(fn):
        @functools.wraps(fn)     # keep fn's real name/docstring
        def inner(*args, **kwargs):
            for attempt in range(times):
                try:
                    return fn(*args, **kwargs)
                except AssertionError:
                    if attempt == times - 1:
                        raise
        return inner
    return outer

class BasePage:
    def __init__(self, url):
        self.url = url
    def __repr__(self):          # useful in a failed assert
        return f"{type(self).__name__}({self.url!r})"

class LoginPage(BasePage):
    def __init__(self, url, user):
        super().__init__(url)    # run parent setup
        self.user = user

    @retry(times=3)
    def submit(self):
        assert self.user, "no user set"
        return "ok"

print(LoginPage("/login", "amy"))   # LoginPage('/login')

Lisez-le de haut en bas : BasePage tient une url et s'affiche joliment, LoginPage réutilise cette configuration avec super().__init__ et ajoute un utilisateur, et @retry enveloppe submit pour qu'un assert instable ait quelques essais de plus avant d'échouer.

Avancé — pourquoi chaque morceau mérite sa place

Basé sur la doc Python officielle (classes) et functools

Toutes les leçons de Bootcamp de logique

  1. Motif 1 — Compter la fréquence des choses
  2. Motif 2 — Deux pointeurs
  3. Motif 3 — Fenêtre glissante
  4. Motif 4 — Arithmétique d'indices & parcours de matrices
  5. Les essentiels de la POO — classes, héritage, méthodes magiques, décorateurs