Senior
Qu'est-ce que le Modèle de Politique (PM) ?
sobes.tech IA
Réponse de l'IA
Le Modèle de Politique (PM) dans le contexte des tests automatisés est une extension du Modèle d'Objet de Page (POM). L'idée principale est de séparer les politiques ou règles métier pour interagir avec les éléments de la page (et le comportement associé à ces politiques) des objets de page eux-mêmes.
Au lieu d'inclure des vérifications et une logique complexe directement dans les Objets de Page, ces règles sont placées dans des classes ou modules séparés — Objets de Politique.
Avantages de cette approche :
- Meilleure lisibilité : Les scénarios de test sont plus simples et plus faciles à comprendre, car ils se concentrent sur l'action décrite, et non sur sa validation.
- Réutilisation : Les politiques peuvent être utilisées pour différents Objets de Page ou dans différents scénarios de test.
- Séparation des responsabilités : Les Objets de Page ne gèrent que l'interaction avec les éléments de la page, tandis que les Objets de Politique gèrent les règles et validations.
- Facilite la maintenance : Modifier une règle métier ne nécessite de changer que l'Objet de Politique, pas tous les Objets de Page où cette règle est appliquée.
- Meilleure évolutivité : Il est plus facile de gérer un grand nombre de tests et de pages à mesure que l'application se développe.
La structure du PM peut ressembler à ceci :
- Objets de Page : Représentent des pages ou modules UI individuels. Contiennent des localisateurs d'éléments et des méthodes pour interagir avec eux (par exemple,
click_button(),enter_text()). Ne contiennent pas de logique de validation. - Objets de Politique : Représentent des règles ou politiques métier. Contiennent des méthodes pour vérifier l'état de l'UI ou effectuer des actions basées sur la logique métier (par exemple,
is_user_logged_in(),can_submit_form(),perform_checkout()). Peuvent utiliser un ou plusieurs Objets de Page. - Tests : Utilisent des Objets de Politique pour exécuter des scénarios qui incluent des vérifications et la logique métier.
Exemple (pseudocode) :
# Objet de Page
class LoginPage:
def enter_username(self, username):
# interagir avec le champ de nom d'utilisateur
pass
def enter_password(self, password):
# interagir avec le champ de mot de passe
pass
def click_login_button(self):
# interagir avec le bouton de connexion
pass
# Objet de Politique
class AuthPolicy:
def __init__(self, driver):
self.login_page = LoginPage(driver)
self.dashboard_page = DashboardPage(driver) # Supposant que DashboardPage existe
def login_as_user(self, username, password):
self.login_page.enter_username(username)
self.login_page.enter_password(password)
self.login_page.click_login_button()
# Ajouter éventuellement des vérifications ici ou dans des méthodes séparées
# return self.is_user_logged_in()
def is_user_logged_in(self):
# Vérifier si les éléments du tableau de bord sont visibles
return self.dashboard_page.is_dashboard_displayed()
# Test
class LoginTest:
def test_successful_login(self, driver):
auth_policy = AuthPolicy(driver)
auth_policy.login_as_user("test_user", "password123")
assert auth_policy.is_user_logged_in(), "L'utilisateur devrait être connecté"