[PYTHON] Testé de pipenv avec des actions GitHub

Je suis récemment venu à this et j'ai pensé que je devais faire un test.

table des matières

J'ai écrit un code de test en utilisant unittest!

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.

Enregistré dans les scripts pipenv

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é.

J'ai essayé d'automatiser le test avec des actions GitHub!

Si vous faites un test, vous l'automatiserez, non?

Sélectionnez Actions → Nouveau flux de travail → Application Python.

スクリーンショット 2020-04-11 21.38.40.png

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

Résumé

スクリーンショット 2020-04-11 21.49.14.png

Cela a fonctionné, donc c'est OK! Le réglage est une autre opportunité!

Recommended Posts

Testé de pipenv avec des actions GitHub
Testé avec Python
[Golang] Créer une image de menu fixe avec des actions Github
Test automatique de Pipenv + Pytest avec actions Github
Testé avec boto3 + mock
Créez un environnement d'analyse de données avec Kedro + MLflow + Github Actions
Exemple de cache Python Actions GitHub
Créer un environnement qui se construit automatiquement avec Github Actions (version Android)
Déployer des applications Go sur Google App Engine avec des actions GitHub
Préparer l'environnement pipenv avec Amazon Linux 2
Construction de l'environnement pytorch @ python3.8 avec pipenv
Créer des pages github avec lektor partie 1