Automatisieren Sie Python-Tests mit CircleCI

Was ist CI?

Continuous Integration, CI, ist das Zusammenführen von Arbeitskopien aller Entwickler zu einer gemeinsamen Hauptlinie mehrmals täglich. (wikipedia)

Es ist ein Rätsel, die Integration zu hören, aber es ist im Grunde eine Entwicklungsmethode, die das Erstellen, Testen und Bereitstellen automatisiert. Durch die Einführung von CI scheint die Softwareentwicklung effizient durchgeführt werden zu können.

In diesem Artikel möchten wir eine Umgebung erstellen, in der CircleCI und Github verknüpft sind, sodass Tests automatisch ausgeführt werden, wenn der Python-Entwicklungscode übertragen wird. Referenzartikel: https://scotch.io/tutorials/continuous-integration-with-python-and-circle-ci

Werkzeug

Registrieren Sie ein Konto und verknüpfen Sie CircleCI und Github.

Umgebungseinstellung

Ein Projekt erstellen

Erstellen Sie eine Projektdatei wie unten gezeigt.

Ordnerstruktur

+-- 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 #Entspricht dem Ausführungsergebnis
        self.assertEqual(actual, expected)

Führen Sie unittest über die Befehlszeile aus

nosetests tests/math-test.py 

Bestätigen Sie, dass "AssertionError: 7! = 8" ausgegeben wird und der Test fehlgeschlagen ist.

Dateien für CircleCI vorbereiten

Fügen Sie Ihrem Projekt die folgenden Dateien hinzu

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

Abhängigkeitsverwaltungsdatei

requirements.txt


nose==1.3.7

circleCI-Konfigurationsdatei

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

Erstellen Sie ein neues Github-Repository und verschieben Sie den gesamten Projektordner in den Entwicklungszweig.

git push origin develop

CircleCI-Einstellungen

Wählen Sie im CircleCI-Bildschirm Projekte-> Repository-> Build starten-> Manuell hinzufügen-> Build starten Und wählen Sie

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

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

Die Testergebnisse werden auf dem Bildschirm Pipelines angezeigt. スクリーンショット 2020-06-15 19.12.43.png

Aktivieren Sie die Github-Statusprüfungen

Wählen Sie im Github-Repository Einstellungen-> Zweige-Registerkarte-> Regel hinzufügen

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

Geben Sie "Entwickeln" (Name des Entwicklungszweigs) in das Muster des Zweignamens ein

Require status checks to pass before merging Require branches to be up to date before merging Aktivieren Sie das Kontrollkästchen. スクリーンショット 2020-06-15 19.21.23.png

Schneiden Sie den Arbeitszweig entsprechend ab und senden Sie eine Pull-Anfrage zur Entwicklung. Anschließend wird die folgende Statusprüfung auf dem Bildschirm für die Pull-Anforderung durchgeführt. スクリーンショット 2020-06-15 19.31.42.png

Ändern Sie den Testcode wie folgt und drücken Sie erneut.

math-test.py


class MathTest(unittest.TestCase):
    def test_addition(self):
        actual = addition(3,4)
        expected = 7 #Entspricht dem Ausführungsergebnis
        self.assertEqual(actual, expected)

Ich konnte bestätigen, dass es den Test bestanden hat! スクリーンショット 2020-06-15 19.34.27.png

Recommended Posts

Automatisieren Sie Python-Tests mit CircleCI
Automatisieren Sie die Sushi-Herstellung mit Python
Automatisieren Sie UI-Tests mit Selenium API | Crawlen von Websites mit Python
Automatisieren Sie das Testen von Smartphone-Apps mit Appium-Python Edition
Automatisieren Sie einfache Aufgaben mit Python Part0
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Automatisieren Sie Windows-Anwendungstests mit Windows Application Driver-Python Edition
[Python] Automatisieren Sie Pelican Builds mit Travis CI
Statistik mit Python
Python mit Go
Automatisieren Sie einfache Aufgaben mit Python Part1 Scraping
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Automatisieren Sie das Testen von Facebook-Apps mit Facebook-Testbenutzern
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
AtCoder: Python: Automatisieren Sie Beispieltests so weit wie möglich.
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Was verwenden Sie beim Testen mit Python?
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Serielle Kommunikation mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python