Maison > Article > développement back-end > Automatisez vos tâches avec Pytest : un guide pratique avec des exemples
L'automatisation est un élément essentiel du développement et des tests de logiciels modernes. Cela permet de gagner du temps, de réduire les erreurs manuelles et de garantir la cohérence entre les processus. Le framework Pytest est l'un des outils les plus populaires et les plus puissants pour automatiser des tâches en Python, notamment lors des tests. Il est léger, facile à utiliser et propose de nombreux plugins et fonctionnalités intégrées pour simplifier le processus d'automatisation.
Dans cet article, nous explorerons les meilleures façons d'automatiser les tâches à l'aide du framework Pytest. Nous passerons en revue trois exemples pratiques, démontrant comment Pytest peut automatiser efficacement différents types de tâches.
Pourquoi Pytest ?
Avant de plonger dans les exemples, voyons pourquoi Pytest est un excellent choix pour l'automatisation des tâches :
Simplicité : Pytest a une syntaxe simple et concise, ce qui facilite l'écriture et la lecture de cas de test.
Extensibilité : avec une large gamme de plugins et de hooks, Pytest peut être étendu pour prendre en charge différents besoins de tests.
Luminaires : Pytest fournit des luminaires, qui constituent une fonctionnalité puissante pour configurer des conditions préalables ou des états pour les tests, améliorant ainsi la réutilisabilité.
Intégration : Pytest s'intègre bien à d'autres outils, notamment les plateformes CI/CD, permettant une automatisation de bout en bout.
Exemple 1 : Automatiser les tests d'API avec Pytest
Les API constituent l’épine dorsale de nombreuses applications et il est essentiel de garantir leur fiabilité. Pytest, ainsi que la bibliothèque de requêtes, facilitent l'automatisation des tests d'API.
Étape 1 : Installer les bibliothèques requises
Tout d’abord, assurez-vous que Pytest et la bibliothèque de requêtes sont installés :
demandes pytest d'installation pip
Étape 2 : Écrivez le script de test
Automatisons une simple requête GET vers une API publique comme JSONPlaceholder, une fausse API REST en ligne pour les tests.
`demandes d'importation
importer pytest
BASE_URL = "https://jsonplaceholder.typicode.com"
@pytest.fixture
def api_client() :
# Cet appareil fournit un objet de session pour effectuer des requêtes API
session = requêtes.Session()
séance de rendement
session.close()
def test_get_posts(api_client) :
# Envoyez une requête GET pour récupérer les publications
réponse = api_client.get(f"{BASE_URL}/posts")
# Assertions
affirmer réponse.status_code == 200
assert len(response.json()) > 0, "Aucun message trouvé"`
Explication :
Luminaire (api_client) : Ce luminaire configure une session réutilisable pour effectuer des requêtes HTTP, garantissant que nous n'avons pas besoin de créer une nouvelle session à chaque fois.
Fonction de test (test_get_posts) : cette fonction envoie une requête GET au point de terminaison /posts et vérifie que :
Le code d'état est 200, indiquant le succès.
La réponse contient au moins un message.
Étape 3 : Exécutez le test
Pour exécuter le test, exécutez la commande suivante :
bash
Copier le code
pytest -v test_api.py
Pourquoi ça marche
Le test est concis et réutilisable, exploitant les appareils de Pytest pour gérer l'installation et le démontage.
Le résultat de Pytest indique quels tests ont réussi ou échoué, ce qui facilite le suivi de la fiabilité de l'API au fil du temps.
Exemple 2 : Automatiser les tests de l'interface utilisateur Web avec Pytest et Selenium
Les tests de l'interface utilisateur Web garantissent que l'interface d'une application se comporte comme prévu. Pytest peut être combiné avec Selenium pour automatiser ces tâches efficacement.
Étape 1 : Installer les bibliothèques requises
Installez Pytest, Selenium et WebDriver Manager :
pip installe pytest sélénium webdriver-manager
Étape 2 : Écrivez le script de test
Voici comment automatiser un simple test d'interface utilisateur Web qui vérifie une fonction de recherche sur Google :
`importer pytest
à partir du pilote Web d'importation de sélénium
à partir de selenium.webdriver.common.by import By
à partir de selenium.webdriver.common.keys importer des clés
à partir de webdriver_manager.chrome, importez ChromeDriverManager
@pytest.fixture
navigateur def() :
# Configurer le Chrome WebDriver
driver = webdriver.Chrome(ChromeDriverManager().install())
générateur de rendement
driver.quit()
def test_google_search(navigateur) :
# Accédez à Google
navigateur.get("https://www.google.com")`{% endraw %}
# Find the search box and enter a query search_box = browser.find_element(By.NAME, "q") search_box.send_keys("Pytest Automation") search_box.send_keys(Keys.RETURN) # Assert that results are shown results = browser.find_elements(By.CSS_SELECTOR, "div.g") assert len(results) > 0, "No search results found"
Explication :
Luminaire (navigateur) : ce luminaire configure une instance Chrome WebDriver à l'aide de webdriver-manager et garantit qu'elle est correctement fermée après chaque test.
Fonction de test (test_google_search) : Cette fonction :
Ouvre la page d'accueil de Google.
Recherche «Pytest Automation».
Affirme que la recherche renvoie au moins un résultat.
Étape 3 : Exécutez le test
Exécutez le test avec :
{% raw %}pytest -v test_ui.py
Pourquoi ça marche
Le dispositif de Pytest gère l'instance du navigateur, rendant la configuration et le démontage du test propres et efficaces.
Grâce à Selenium, le script interagit avec la page Web comme un véritable utilisateur, garantissant que l'interface utilisateur fonctionne comme prévu.
Exemple 3 : Automatisation de la validation des données avec Pytest et Pandas
La validation des données est cruciale dans les processus d’ingénierie des données, d’analyse et ETL. Pytest peut automatiser les tâches de validation des données à l'aide de la bibliothèque pandas.
Étape 1 : Installer les bibliothèques requises
Assurez-vous que Pytest et Pandas sont installés :
pip installe les pandas pytest
Étape 2 : Écrivez le script de test
Automatisons une tâche dans laquelle nous validons qu'un ensemble de données répond à certaines conditions (par exemple, pas de valeurs nulles, types de données corrects, etc.).
`importer pytest
importer des pandas en tant que pd
@pytest.fixture
def sample_data() :
# Créer un exemple de DataFrame
données = {
"nom": ["Alice", "Bob", "Charlie", "David"],
"âge": [25, 30, 35, 40],
"email": ["alice@example.com", "bob@example.com", Aucun, "david@example.com"]
>
df = pd.DataFrame(données)
retourner df
def test_data_not_null(sample_data):
# Vérifiez s'il y a des valeurs nulles dans le DataFrame
assert sample_data.isnull().sum().sum() == 0, "Les données contiennent des valeurs nulles"
def test_age_column_type(sample_data):
# Vérifiez que la colonne 'age' est de type entier
assert sample_data['age'].dtype == 'int64', "La colonne Age n'est pas de type entier"`
Explication :
Appareil (sample_data) : cet appareil configure un exemple de DataFrame, simulant un ensemble de données qui peut être réutilisé dans plusieurs tests.
Fonction de test (test_data_not_null) : ce test vérifie s'il y a des valeurs nulles dans le DataFrame et échoue si elles sont trouvées.
Fonction de test (test_age_column_type) : ce test vérifie que la colonne d'âge est de type entier, garantissant la cohérence des données.
Étape 3 : Exécutez le test
Exécutez le test avec :
pytest -v test_data.py
Pourquoi cela fonctionne
La flexibilité de Pytest permet des tests centrés sur les données, garantissant que les ensembles de données répondent aux critères attendus.
Le luminaire facilite la configuration et la modification des données de test sans dupliquer le code.
Bonnes pratiques pour automatiser les tâches avec Pytest
Utilisez les appareils pour l'installation et le démontage : les appareils aident à gérer efficacement l'installation et le démontage, rendant vos tests modulaires et réutilisables.
Tirer parti des plugins : Pytest propose une variété de plugins (par exemple, pytest-html pour les rapports HTML, pytest-xdist pour l'exécution parallèle) pour améliorer vos efforts d'automatisation.
Paramétrer les tests : utilisez @pytest.mark.parametrize pour tester plusieurs ensembles de données ou d'entrées, réduisant ainsi la duplication de code.
Intégration aux pipelines CI/CD : intégrez les tests Pytest avec des outils CI/CD comme Jenkins ou GitHub Actions pour des tests continus.
Conclusion
Pytest est un outil puissant pour automatiser une variété de tâches, des tests d'API et d'interface utilisateur Web à la validation des données. Sa simplicité, combinée à sa flexibilité et à sa prise en charge étendue des plugins, en fait un excellent choix pour les développeurs et les ingénieurs QA. En tirant parti des fonctionnalités de Pytest telles que les appareils, le paramétrage et les intégrations avec les pipelines CI/CD, vous pouvez créer des cadres d'automatisation robustes, maintenables et évolutifs.
Si vous cherchez à automatiser votre flux de travail ou à améliorer votre processus de test, Pytest est un excellent point de départ. Bon test !
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!