Testen Sie nicht funktionalisierte Python-Programme mit GitLab CI

Überblick

Weil es den Auftrag gab, gleichzeitig automatisierte Tests in der Python-Anfängerausbildung zu unterrichten Wir untersuchten, ob automatische Tests an Programmen durchgeführt werden können, bevor wir uns mit Funktionen vertraut machen.

Bedarf

Ich habe noch nicht entschieden, was ich für den Git-Server verwenden soll, daher habe ich das automatisierte Testverfahren bei GitLab überprüft, das ich kürzlich verwendet habe.

Zu testendes Programm

chapter_01_1.py


height = input('Höhe(m) ')
width = input('Unterseite(m) ')
area = float(height) * float(width) / 2
print('Die Gegend ist'+str(area)+'Quadratmeter')

Testspezifikationsdatei

Da es sich um ein Programm handelt, das Standardeingaben akzeptiert, wird der Inhalt der Testeingabedatei mithilfe der Shell-Umleitung ausgefüllt.

tests/test_chapter01.py


def test_chapter01_1(bash):
    assert bash.run_script_inline(['python3 chapter_01_1.py < tests/stdin_chapter_01_1.txt']) == 'Höhe(m)Unterseite(m)Fläche ist 1.2 Quadratmeter'

Eingabedatei testen

Nach dem Eingabewert ist ein Zeilenumbruch erforderlich.

tests/stdin_chapter_01_1.txt


1.2
2.0

Führen Sie einen lokalen Test durch

Obwohl es im Testskript als Bash geschrieben ist, funktioniert es natürlich mit zsh.

% pytest
============================================================ test session starts ============================================================
platform darwin -- Python 3.7.3, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
rootdir: /Users/takaiayumu/python-basic
plugins: openfiles-0.3.2, arraydiff-0.3, shell-0.2.3, doctestplus-0.3.0, remotedata-0.3.1, cov-2.8.1
collected 1 items

tests/test_chapter01.py ..                                                                                                             [100%]

========================================================= 1 passed in 1.45 seconds ==========================================================

Einstellungen für GitLab CI

Ich verwende ein Python3-Image, aber die pytest-Shell funktioniert nicht unter Alpine Linux, da bash nicht standardmäßig installiert ist. Daher ist es notwendig, bash mit dem Befehl apk zu installieren.

.gitlab-ci.yml


image: python:3-alpine

before_script:
    - apk update
    - apk add bash
    - pip install pytest pytest-cov pytest-shell

test:
    script:
        - pytest --cov=./tests

Recommended Posts

Testen Sie nicht funktionalisierte Python-Programme mit GitLab CI
Primzahlbeurteilung mit Python
Primzahlbeurteilung mit Python
Statische Analyse von Python-Code mit GitLab CI
Unit Test Log Ausgabe mit Python
[Python] Automatisieren Sie Pelican Builds mit Travis CI
[Python] Super einfacher Test mit Assert-Anweisung
Stresstest mit Locust in Python geschrieben
WebUI-Test mit Python2.6 + Selenium 2.44.0 - Profileinstellung
Generieren Sie japanische Testdaten mit Python faker
Wie man einen Taschentest mit Python macht
Integration mit setuptools / python setup.py test / pytest-runder
FizzBuzz in Python3
Scraping mit Python
Erstellen Sie solche Testdaten mit Python (Teil 1)
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Python-Integritätstest
Bingo mit Python
Zundokokiyoshi mit Python
[Kleine Geschichte] Testen Sie die Bilderzeugung mit Python / OpenCV
ARC037 Baum testet höflich mit rekursiver Python-Funktion
Verfolgen Sie Python-Programme
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
1. Algorithmus Praktischer Test Lösen Sie frühere Fragen mit Python
[Automatisierung] Betreiben Sie GitLab mit Python, um die Verwaltung von Anfragen zu vereinfachen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Mit Codetest stärken ⑦
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
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Mit Codetest stärken ⑨
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