Je suis récemment venu à this et j'ai pensé que je devais faire un test.
Référence: https://qiita.com/aomidro/items/3e3449fde924893f18ca
Code que j'ai écrit: [https://github.com/sun-yryr/Rec-adio/blob/feature/test/test/test_func.py](https://github.com/sun-yryr/Rec-adio/ blob / fonctionnalité / test / test / test_func.py)
Python a un module standard, unittest. J'ai écrit un code de test en utilisant ceci.
Veuillez noter que de nombreuses pièces sont couvertes par l'opération.
Ecrivez chaque code de test comme une sous-classe de ʻunittest.TestCase`
import unittest
importer le module de test en tant que f
class TestCalculate(unittest.TestCase):
def test_add(self):
#Test d'addition
self.assertEqual(f.add(3, 5), 8)
def test_sub(self):
#Test de soustraction
self.assertEqual(f.sub(3, 5), -2)
Les méthodes d'assert disponibles sont [ici](https://docs.python.org/ja/3/library/unittest.html#assert-methods Il peut être trouvé dans library / unittest.html # assert-methods)).
La méthode de test doit commencer par «test».
if __name__ == "__main__":
unittest.main()
Le test s'exécute en appelant main.
Je pense que la plupart du temps, vous écrivez le code de test dans plusieurs fichiers.
L'exécution de python -m unittest discover -v
exécutera tous les tests du répertoire courant.
Puisque j'utilise pipenv, je vais l'enregistrer dans des scripts.
La commande ci-dessus doit être exécutée dans le dossier où se trouve le code de test, alors ajoutez quelques idées.
[scripts]
test = "bash -c \"cd test ; python -m unittest discover\""
Vous devez d'abord taper cd
pour aller dans le dossier du code de test, alors exécutez-le avec bash -c
.
$ pipenv run
....
----------------------------------------------------------------------
Run 4 tests in 0.386s
OK
Si vous obtenez OK, vous avez terminé.
Si vous faites un test, vous l'automatiserez, non?
Sélectionnez Actions → Nouveau flux de travail → Application Python.
Le modèle est facile à utiliser et c'est incroyable ...
Vous aurez un fichier yaml avec le modèle suivant appliqué.
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python application
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest
Je vais le définir de manière appropriée.
name: Python application
C'est un nom, appelons-le comme vous voulez.
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
Décidez dans quelle opération dans quelle branche exécuter l'action. C'est généralement bien comme ça
runs-on: ubuntu-latest
Je pense que c'est l'image sur laquelle tourner. (Je ne suis pas sûr, alors saute-le)
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
?
Je ne connais que la spécification de la version de python
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest
Un ensemble avec nom et course. Il semble que la commande spécifiée par run s'exécute.
C'est ce que vous définissez
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python application
on:
push:
branches: [ master ]
pull_request:
branches: [ master, release ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.6
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install Pipenv
run: |
python -m pip install --upgrade pip
pip install pipenv
- name: Install dependencies
run: |
pipenv sync
- name: Test with unittest
run: |
pipenv run test
Cela a fonctionné, donc c'est OK! Le réglage est une autre opportunité!
Recommended Posts