Tester les programmes non fonctionnalisés Python avec GitLab CI

Aperçu

Parce qu'il y avait un ordre d'enseigner les tests automatisés en même temps dans l'éducation de niveau débutant Python Nous avons cherché à savoir si des tests automatiques pouvaient être effectués sur les programmes avant de découvrir les fonctions.

Exigences

Je n'ai pas encore décidé quoi utiliser pour le serveur Git, j'ai donc vérifié la procédure de test automatique sur GitLab, que j'ai récemment commencé à utiliser.

Programme à tester

chapter_01_1.py


height = input('la taille(m) ')
width = input('Bas(m) ')
area = float(height) * float(width) / 2
print('La zone est'+str(area)+'Mètre carré')

Fichier de spécification de test

Puisqu'il s'agit d'un programme qui accepte l'entrée standard, le contenu du fichier d'entrée de test est rempli à l'aide de la redirection shell.

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']) == 'la taille(m)Bas(m)La zone est 1.2 mètres carrés'

Tester le fichier d'entrée

Un saut de ligne est requis après la valeur d'entrée.

tests/stdin_chapter_01_1.txt


1.2
2.0

Exécuter un test local

Bien qu'il soit écrit comme bash dans le script de test, il fonctionne naturellement avec 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 ==========================================================

Paramètres de GitLab CI

J'utilise l'image Python3, mais pytest-shell ne fonctionne pas sur la base Alpine Linux car bash n'est pas installé par défaut. Par conséquent, il est nécessaire d'installer bash avec la commande apk.

.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

Tester les programmes non fonctionnalisés Python avec GitLab CI
Jugement des nombres premiers avec Python
Jugement des nombres premiers avec python
Analyse statique du code Python avec GitLab CI
Sortie du journal de test unitaire avec python
[Python] Automatisez les builds Pelican avec Travis CI
[Python] Test super facile avec instruction assert
Test de stress avec Locust écrit en Python
Test WebUI avec Python2.6 + Selenium 2.44.0 - paramètre de profil
Générer des données de test japonais avec Python Faker
Comment faire un test de sac avec python
Intégration avec setuptools / python setup.py test / pytest-runner
FizzBuzz en Python3
Grattage avec Python
Créez des données de test comme ça avec Python (partie 1)
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Test d'intégrité Python
Bingo avec python
Zundokokiyoshi avec python
[Petite histoire] Tester la génération d'images avec Python / OpenCV
ARC037 Baum teste poliment avec la fonction récursive Python
Suivre les programmes Python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
1er test pratique d'algorithme Résoudre les questions passées avec python
[Automatisation] Utilisez GitLab avec Python pour faciliter la gestion des requêtes
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Renforcez avec le test de code ⑦
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Renforcez avec le test de code ⑨
Apprendre Python avec ChemTHEATER 05-1
Renforcez avec le test de code ③
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