Imaginez ceci : vous travaillez sur un projet Python et vous passez des heures à exécuter manuellement vos tests avant chaque déploiement. Fatiguant, non ? Et si je vous disais qu’il existe une solution pour automatiser complètement ce processus ? Avec GitLab, nous pouvons configurer un pipeline CI/CD qui exécute vos tests Python automatiquement à chaque commit. Ensemble, nous allons découvrir comment mettre en place cette automatisation, étape par étape.

Prérequis et vision d’ensemble

Avant de commencer, voici ce dont vous aurez besoin :

  • Un projet Python avec des tests unitaires (par exemple, avec pytest ou unittest)
  • Un compte GitLab (gratuit ou entreprise)
  • Des connaissances de base en Python et Git
  • Un fichier requirements.txt pour vos dépendances

Le temps estimé pour cette configuration est d’environ 30 minutes, selon votre familiarité avec les outils.

Tutoriel pas-à-pas

1. Préparer votre projet Python

Objectif : S’assurer que votre projet est prêt pour l’automatisation.

  1. Vérifiez que vos tests sont bien configurés. Par exemple, avec pytest, votre structure pourrait ressembler à ceci :
    mon_projet/ ├── tests/ │ ├── test_ma_fonction.py │ └── ... ├── src/ │ └── ... └── requirements.txt
  2. Installez pytest si ce n’est pas déjà fait :
    pip install pytest
  3. Vérifiez que vos tests passent en local :
    pytest

Vérification : Tous vos tests doivent passer sans erreur.

Erreurs fréquentes :

  • Tests qui échouent en local : corrigez-les avant de continuer
  • Absence de requirements.txt : générez-le avec pip freeze > requirements.txt

2. Créer un fichier .gitlab-ci.yml

Objectif : Configurer le fichier de configuration CI/CD de GitLab.

  1. À la racine de votre projet, créez un fichier nommé .gitlab-ci.yml
  2. Ajoutez la configuration de base :
    stages: - test test_python: stage: test image: python:3.9 before_script: - pip install -r requirements.txt script: - pytest
  3. Poussez ce fichier sur votre dépôt GitLab

Vérification : Allez dans l’onglet « CI/CD » > « Pipelines » de votre projet GitLab. Vous devriez voir un pipeline en cours d’exécution.

Erreurs fréquentes :

  • Erreur de syntaxe dans le fichier YAML : vérifiez l’indentation
  • Image Docker non disponible : utilisez une version stable de Python

3. Configurer les variables d’environnement

Objectif : Ajouter des variables sécurisées si nécessaire.

  1. Dans GitLab, allez dans « Settings » > « CI/CD »
  2. Ajoutez vos variables sous « Variables d’environnement »
  3. Par exemple, pour une base de données de test :
    DB_HOST=localhost DB_USER=test DB_PASSWORD=secret

Vérification : Vos tests doivent pouvoir accéder à ces variables dans le pipeline.

Erreurs fréquentes :

  • Variables non masquées : utilisez toujours le type « File » pour les mots de passe
  • Variables non disponibles : vérifiez leur nom et leur casse

4. Ajouter des tests supplémentaires

Objectif : Enrichir votre pipeline avec d’autres types de tests.

  1. Modifiez votre fichier .gitlab-ci.yml pour inclure des tests de couverture :
    test_python: script: - pip install pytest-cov - pytest --cov=./src --cov-report=xml artifacts: reports: coverage_report: coverage_format: cobertura path: coverage.xml
  2. Ajoutez des tests de linting avec flake8 :
    lint: stage: test script: - pip install flake8 - flake8 src/ tests/

Vérification : Le pipeline doit maintenant inclure plusieurs étapes de test.

Erreurs fréquentes :

  • Tests de couverture qui échouent : ajustez votre seuil de couverture
  • Erreurs de linting : corrigez les problèmes de style

5. Configurer les notifications

Objectif : Recevoir des alertes en cas d’échec.

  1. Dans « Settings » > « CI/CD » > « Email notifications », configurez les destinataires
  2. Ou utilisez des webhooks pour Slack ou d’autres outils

Vérification : Vous devriez recevoir une notification après un échec de pipeline.

Bonnes pratiques / Optimisations

Pour aller plus loin, voici quelques conseils :

  • Cachez les dépendances pour accélérer les builds :
    cache: paths: - .cache/pip
  • Utilisez des tags pour exécuter des tests spécifiques
  • Limitez la durée des jobs avec timeout
  • Documentez votre pipeline avec des commentaires dans le fichier YAML

FAQ ciblée

Comment puis-je exécuter des tests sur plusieurs versions de Python ?

Créez plusieurs jobs avec différentes images Docker, par exemple :

test_python_3_8: image: python:3.8 script: - pytest test_python_3_9: image: python:3.9 script: - pytest

Comment puis-je tester mon application avec une base de données ?

Utilisez un service comme PostgreSQL ou MySQL dans votre pipeline :

test_with_db: services: - name: postgres:13 alias: postgres variables: POSTGRES_DB: test_db POSTGRES_USER: test POSTGRES_PASSWORD: secret

Comment puis-je exécuter des tests uniquement sur certaines branches ?

Utilisez les règles dans votre fichier YAML :

rules: - if: $CI_COMMIT_BRANCH == "main"

Comment puis-je voir les résultats de couverture de code ?

Pour visualiser les résultats de couverture de code dans GitLab, vous devez d’abord générer un rapport de couverture lors de l’exécution de vos tests. Cela peut être fait en utilisant des outils comme pytest-cov pour Python. Ensuite, vous pouvez configurer votre pipeline GitLab CI/CD pour afficher ces résultats directement dans l’interface de GitLab.

Voici un exemple de configuration dans votre fichier .gitlab-ci.yml pour générer et afficher les résultats de couverture de code :

stages:
  - test

test:
  stage: test
  script:
    - pip install pytest pytest-cov
    - pytest --cov=my_module tests/
  artifacts:
    reports:
      cobertura: coverage.xml

Dans cet exemple, le job test installe pytest et pytest-cov, exécute les tests avec couverture de code, et génère un fichier de rapport au format Cobertura (coverage.xml). Ce fichier est ensuite utilisé par GitLab pour afficher les résultats de couverture de code dans l’interface utilisateur.

Camille Rousseau
Camille Rousseau
Consultante en marketing digital et stratégie de contenu
Consultante indépendante depuis 6 ans, j'aide les entreprises à développer leur présence digitale et à créer du contenu engageant. Spécialisée en marketing de contenu, réseaux sociaux et stratégie digitale, je combine créativité et analyse pour obtenir des résultats mesurables.

Commentaires (4)

  1. Avez-vous des conseils é donner concernant "Automatiser Tests Python avec GitLab : Guide Pratique" ?

    1. Camille Rousseau

      Merci pour votre question ! Automatiser Tests Python avec GitLab : Guide Pratique est un sujet qui me tient é céur. Il est essentiel de prendre en compte tous les aspects pour avoir une vision compléte.

  2. Pouvez-vous expliquer en détail "Automatiser Tests Python avec GitLab : Guide Pratique" ?

    1. Camille Rousseau

      Merci pour votre question ! Automatiser Tests Python avec GitLab : Guide Pratique est un sujet qui me tient é céur. C'est un domaine qui évolue rapidement et qui nécessite une veille constante.

6 réponses

    1. Merci pour votre question ! Automatiser Tests Python avec GitLab : Guide Pratique est un sujet qui me tient é céur. Il est essentiel de prendre en compte tous les aspects pour avoir une vision compléte.

    1. Merci pour votre question ! Automatiser Tests Python avec GitLab : Guide Pratique est un sujet qui me tient é céur. C’est un domaine qui évolue rapidement et qui nécessite une veille constante.

Laisser un commentaire