Ich bin kürzlich zu this gekommen und dachte, ich müsste einen Test schreiben.
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.
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.
Wenn Sie einen Test durchführen, werden Sie ihn automatisieren, oder?
Wählen Sie Aktionen → Neuer Workflow → Python-Anwendung.
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
Es hat funktioniert, also ist es OK! Tuning ist eine weitere Gelegenheit!
Recommended Posts