Automatisez les tests python avec CircleCI

Qu'est-ce que CI

L'intégration continue, CI, est la fusion de copies de travail de tous les développeurs en une ligne principale partagée plusieurs fois par jour. (wikipedia)

C'est un mystère d'entendre l'intégration, mais c'est essentiellement une méthode de développement qui automatise le travail de construction, de test et de déploiement. En introduisant CI, il semble que le développement de logiciels peut être effectué efficacement.

Dans cet article, nous visons à créer un environnement dans lequel CircleCI et Github sont liés afin que les tests soient automatiquement exécutés lorsque le code de développement python est poussé. Article de référence: https://scotch.io/tutorials/continuous-integration-with-python-and-circle-ci

outil

Créez un compte et associez CircleCI et Github.

Cadre environnemental

Créer un projet

Créez un fichier de projet comme indiqué ci-dessous.

Structure des dossiers

+-- pyhton-ci
    +-- src
    |   +-- match.py
    +-- tests
        +-- math-test.py

src/math.py


def addition(value1, value2):
    if not isinstance(value1, int) and not isinstance(value2, int):
        return 'Invalid input'
    else:
        return value1 + value2

tests/math-test.py


import unittest
from src.math import addition

class MathTest(unittest.TestCase):
    def test_addition(self):
        actual = addition(3,4)
        expected = 8 #Correspond au résultat de l'exécution
        self.assertEqual(actual, expected)

Exécutez unittest à partir de la ligne de commande

nosetests tests/math-test.py 

ʻAssertionError: 7! = 8` s'affiche et confirme que le test a échoué.

Préparation des fichiers pour CircleCI

Ajoutez les fichiers suivants à votre projet

+-- pyhton-ci
    +-- src
    |   +-- match.py
    +-- tests
    |   +-- math-test.py
    +-- requirements.txt
    +-- .circleci
        +-- config.yml

Fichier de gestion des dépendances

requirements.txt


nose==1.3.7

fichier de configuration circleCI

version: 2
jobs:
  build:
    working_directoyr: ~/python-ci
    docker:
      - image: circleci/python:3.6.4
    steps:
      - checkout
      - run:
          command: sudo pip install -r requirements.txt
      - run:
          command: nosetests tests/math-test.py

Créez un nouveau référentiel Github et transférez l'ensemble du dossier du projet dans la branche de développement.

git push origin develop

Paramètres CircleCI

Sur l'écran CircleCI, sélectionnez Projects-> Repository-> Start Building-> Add Manually-> Start Building Et sélectionnez

スクリーンショット 2020-06-15 19.08.41.png

スクリーンショット 2020-06-15 19.10.38.png

Les résultats du test s'affichent sur l'écran Pipelines. スクリーンショット 2020-06-15 19.12.43.png

Activer les vérifications de l'état de Github

Sélectionnez Paramètres-> onglet Branches-> Ajouter une règle dans le référentiel Github

スクリーンショット 2020-06-15 19.19.16.png

Entrez develop (nom de la branche de développement) dans le modèle de nom de la branche

Require status checks to pass before merging Require branches to be up to date before merging Cochez la case. スクリーンショット 2020-06-15 19.21.23.png

Coupez la branche de travail de manière appropriée et envoyez une pull request pour développer. Ensuite, la vérification d'état suivante est effectuée sur l'écran de demande d'extraction. スクリーンショット 2020-06-15 19.31.42.png

Modifiez le code de test comme ci-dessous et appuyez à nouveau.

math-test.py


class MathTest(unittest.TestCase):
    def test_addition(self):
        actual = addition(3,4)
        expected = 7 #Correspond au résultat de l'exécution
        self.assertEqual(actual, expected)

J'ai pu confirmer qu'il a réussi le test! スクリーンショット 2020-06-15 19.34.27.png

Recommended Posts

Automatisez les tests python avec CircleCI
Automatisez la fabrication des sushis avec Python
Automatisez les tests d'interface utilisateur avec l'API Selenium | Exploration de sites Web avec python
Automatisez les tests d'applications pour smartphone avec Appium-Python Edition
Automatisez des tâches simples avec Python Part0
Coexistence de Python2 et 3 avec CircleCI (1.0)
Automatisez les tests d'applications Windows avec Windows Application Driver-Python Edition
[Python] Automatisez les builds Pelican avec Travis CI
Statistiques avec python
Python avec Go
Automatisez des tâches simples avec Python Part1 Scraping
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Automatisez les tests d'applications Facebook avec les utilisateurs de test Facebook
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
AtCoder: Python: Automatisez autant que possible les tests d'échantillons.
J'ai essayé d'automatiser la fabrication des sushis avec python
Qu'utilisez-vous lorsque vous testez avec Python?
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Communication série avec python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Premiers pas avec Python
Utiliser DynamoDB avec Python
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python