[PYTHON] Pipenv mit GitHub-Aktionen getestet

Ich bin kürzlich zu this gekommen und dachte, ich müsste einen Test schreiben.

Inhaltsverzeichnis

Ich habe einen Testcode mit unittest geschrieben!

Referenz: https://qiita.com/aomidro/items/3e3449fde924893f18ca

Code, den ich geschrieben habe: [https://github.com/sun-yryr/Rec-adio/blob/feature/test/test/test_func.py](https://github.com/sun-yryr/Rec-adio/ blob / feature / test / test / test_func.py)

Python hat ein Standardmodul, unittest. Ich habe damit einen Testcode geschrieben.

Bitte beachten Sie, dass viele Teile vom Betrieb abgedeckt werden.

Schreiben Sie jeden Testcode als Unterklasse von "unittest.TestCase"

import unittest
Testmodul importieren als f
class TestCalculate(unittest.TestCase):
    def test_add(self):
    	#Additionstest
    	self.assertEqual(f.add(3, 5), 8)
    		
    def test_sub(self):
    	#Subtraktionstest
    	self.assertEqual(f.sub(3, 5), -2)

Die verfügbaren Assert-Methoden sind [hier](https://docs.python.org/ja/3/library/unittest.html#assert-methods. Es kann unter library / unittest.html # assert-Methods)) gefunden werden.

Die Testmethode muss mit "test" beginnen.

if __name__ == "__main__":
    unittest.main()

Der Test wird durch Aufrufen von main ausgeführt.

Ich denke, die meiste Zeit schreiben Sie den Testcode in mehreren Dateien.

Wenn Sie "python -m unittest Discover -v" ausführen, werden alle Tests im aktuellen Verzeichnis ausgeführt.

In Pipenv-Skripten registriert

Da ich pipenv verwende, werde ich es in Skripten registrieren.

Der obige Befehl muss in dem Ordner ausgeführt werden, in dem sich der Testcode befindet. Fügen Sie daher einige Ideen hinzu.

[scripts]
test = "bash -c \"cd test ; python -m unittest discover\""

Sie müssen zuerst "cd" eingeben, um in den Testcode-Ordner zu wechseln. Führen Sie ihn daher mit "bash -c" aus.

$ pipenv run 
....
----------------------------------------------------------------------
Run 4 tests in 0.386s

OK

Wenn Sie in Ordnung sind, sind Sie fertig.

Ich habe versucht, den Test mit GitHub Actions zu automatisieren!

Wenn Sie einen Test durchführen, werden Sie ihn automatisieren, oder?

Wählen Sie Aktionen → Neuer Workflow → Python-Anwendung.

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

Die Vorlage ist einfach zu bedienen und es ist erstaunlich ...

Sie haben eine Yaml-Datei mit der folgenden Vorlage angewendet.

    # 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

Ich werde es entsprechend einstellen.

    name: Python application

Es ist ein Name, nennen wir ihn wie du willst.

    on:
      push:
        branches: [ master ]
      pull_request:
        branches: [ master ]

Entscheiden Sie, in welcher Operation in welchem Zweig die Aktion ausgeführt werden soll. Es ist normalerweise in Ordnung, wie es ist

    runs-on: ubuntu-latest

Ich denke, es ist das Bild, auf dem man laufen kann. (Ich bin nicht sicher, also überspringe es)


    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.8
      uses: actions/setup-python@v1
      with:
        python-version: 3.8

Ich weiß nur, wie man die Version von Python spezifiziert

    - 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

Ein Set mit Name und Lauf. Es scheint, dass der von run angegebene Befehl ausgeführt wird.

Dies ist, was Sie einstellen

    # 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

Zusammenfassung

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

Es hat funktioniert, also ist es OK! Tuning ist eine weitere Gelegenheit!

Recommended Posts

Pipenv mit GitHub-Aktionen getestet
Getestet mit Python
[Golang] Erstellen Sie ein Docker-Image mit Github-Aktionen
Automatischer Test von Pipenv + Pytest mit Github-Aktionen
Getestet mit boto3 + mock
Erstellen Sie eine Datenanalyseumgebung mit Kedro + MLflow + Github-Aktionen
GitHub Actions Python-Cache-Beispiel
Erstellen einer Umgebung, die automatisch mit Github-Aktionen erstellt wird (Android-Version)
Stellen Sie Go-Apps mit GitHub-Aktionen für Google App Engine bereit
Bereiten Sie die Pipenv-Umgebung mit Amazon Linux 2 vor
pytorch @ python3.8 Umgebungskonstruktion mit pipenv
Erstellen Sie Github-Seiten mit Lektor Part 1