So führen Sie Tests zusammen mit Python unittest aus

Einführung

Ich habe erklärt, wie man unittest in Unittest in Python ausführen (für Anfänger) verwendet. Während der Verwendung wollte ich mehrere Tests gleichzeitig testen und sie organisieren. Mit anderen Worten, wie man TestSuite benutzt. Offizielle Dokumentation und "[[Python] Zwei Möglichkeiten, eine Testsuite mit dem unittest-Modul zu implementieren](http: //www.yoheim. net / blog.php? q = 20160903) ”wurde als Referenz verwendet.

Verzeichnisaufbau

.
├─sample_a.py
└─tests
  ├─__init__.py
  ├─test_samplea.py
  ├─test_sampleb.py
  ├─samplec.py
  └─sample_suite.py

Beispielquelle

sample_a.py


class SampleA():
  def hello(self):
    print('Hello, I am sample of a!')

test_samplea.py


import unittest

from sample_a import SampleA


class TestSampleA(unittest.TestCase):
  def test_a1(self):
    print('Test sample A1')
    a = SampleA()
    a.hello()

  def test_a2(self):
    print('Test sample A2')

  def a3(self):
    print('Test sample A3')

test_sampleb.py


import unittest


class TestSampleB(unittest.TestCase):
  def test_b1(self):
    print('Test sample B1')

  def test_b2(self):
    print('Test sample B2')

  def b3(self):
    print('Test sample B3')

samplec.py


import unittest


class SampleC(unittest.TestCase):
  def test_c1(self):
    print('Test sample C1')

  def test_c2(self):
    print('Test sample C2')

  def c3(self):
    print('Test sample C3')

sample_suite.py


import unittest

from . import test_samplea
from . import test_sampleb
from . import samplec


def suite():
  suite = unittest.TestSuite()
  suite.addTest(test_samplea.TestSampleA('test_a1'))
  suite.addTest(test_samplea.TestSampleA('a3'))
  suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB))
  suite.addTest(samplec.SampleC('test_c1'))
  return suite


if __name__ == '__main__':
  runner = unittest.TextTestRunner()
  test_suite = suite()
  runner.run(test_suite)

Führen Sie einen Test durch

python -m unittest tests.test_samplea Das Ausführungsergebnis ist wie folgt.

Test sample A1
Hello, I am sample of a!
.Test sample A2
.
----------------------------------------------------------------------
Ran 2 tests in 0.003s

OK

An der Ausgabe können Sie erkennen, dass die Testmethoden test_a1 und test_a2 ausgeführt werden. Mit der a3-Methode wurden keine Tests durchgeführt.

Führen Sie Tests zusammen durch

python -m unittest Das Ausführungsergebnis ist wie folgt.

Test sample A1
Hello, I am sample of a!
.Test sample A2
.Test sample B1
.Test sample B2
.
----------------------------------------------------------------------
Ran 4 tests in 0.006s

OK

An den Testergebnissen können Sie erkennen, dass die Tests für test_samplea.py und test_sampleb.py ausgeführt werden. Der Test für samplec.py wurde nicht ausgeführt. In der Datei, die mit test beginnt, werden die Tests der Methoden, die mit test beginnen, zusammen ausgeführt.

Führen Sie nur Ihre eigenen Tests durch

python -m tests.sample_suite

Test sample A1
Hello, I am sample of a!
.Test sample A3
.Test sample B1
.Test sample B2
.Test sample C1
.
----------------------------------------------------------------------
Ran 5 tests in 0.006s

OK

Der von addTest hinzugefügte Test wird ausgeführt. Testmethoden (a3), die nicht mit Test beginnen, und Testdateien (samplec.py), die nicht mit Test beginnen, werden ebenfalls ausgeführt. Um einen Test hinzuzufügen, müssen Sie jede Methode hinzufügen suite.addTest(test_samplea.TestSampleA('test_a1')) Oder Ergänzung nach Klasse suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB)) es gibt.

Zusammenfassung

Die Testerkennungsmethode ist sehr praktisch, da Sie den Test ausführen können, ohne etwas festzulegen. Da jedoch die Anzahl der Tests zunimmt und die Verarbeitung von Tests, deren Verarbeitung lange dauert, hinzugefügt wird, möchte ich die Tests ausschließen. Daher habe ich untersucht, wie nur die von mir festgelegten Tests ausgeführt werden können. Ich konnte keinen Versuch und Irrtum machen und dachte, dass es ein wenig einfacher implementiert und mit Python-M Unit Test ausgeführt werden könnte. Nicht gut, da die auszuführende Schnittstelle inkonsistent ist. .. .. Bitte lassen Sie mich wissen, ob es einen einfacheren Weg gibt, dies zu implementieren.

Recommended Posts

So führen Sie Tests zusammen mit Python unittest aus
Wie man setUp nur einmal in Python unittest ausführt
So arbeiten Sie mit BigQuery in Python
[REAPER] Wie man Reascript mit Python spielt
Konvertieren Sie PDFs mit Python in Massenbilder
Wie man tkinter mit Python in Pyenv benutzt
So führen Sie LeapMotion mit Nicht-Apple Python aus
So führen Sie Notepad ++ Python aus
Wie man in Python entwickelt
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So führen Sie eine Hash-Berechnung mit Salt in Python durch
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
So führen Sie Python im virtuellen Raum aus (für MacOS)
[Python] Wie man PCA mit Python macht
Python: So verwenden Sie Async mit
So sammeln Sie Bilder in Python
Erste Schritte mit Python
Wie man Prozesse in großen Mengen abbricht
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
So berechnen Sie das Datum mit Python
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Umgang mit Japanisch mit Python
So testen Sie, ob die Ausnahme in Python unittest ausgelöst wird
[Road to Intermediate Python] Installieren Sie Pakete in großen Mengen mit pip
[TensorFlow 2 / Keras] Ausführen des Lernens mit CTC Loss in Keras
So extrahieren Sie einen Termin in Google Kalender mit Python
So führen Sie eine mit Python + py2app erstellte App aus, die mit Anaconda erstellt wurde
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Wie man mit Python-Installationsfehlern in pyenv umgeht (BUILD FAILED)
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Versuchen Sie, sich mit Python bei qiita anzumelden
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
Unittest in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
Wie man einen Taschentest mit Python macht
So überprüfen Sie die Version von opencv mit Python
So zeigen Sie Python-Japanisch mit Lolipop an
[Python2.7] Zusammenfassung der Verwendung von unittest
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
Wie man mit Python-Flüchen Japanisch eingibt
So betreiben Sie die Zeitstempelstation in Python
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python