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.
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.
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é')
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'
Un saut de ligne est requis après la valeur d'entrée.
tests/stdin_chapter_01_1.txt
1.2
2.0
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 ==========================================================
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