Python-Unit-Test-Vorlage

Hintergrund

Python enthält unittest im Standardmodul, aber ich wusste nicht sofort, wie ich es verwenden soll. Daher behalte ich die Vorlage als Memorandum, damit ich sie kopieren und in andere Projekte einfügen kann.

*Vorsichtsmaßnahmen

Ab python2.7 kann unittest setUpClass und tearDownClass verwenden, die ausgeführt werden, wenn die Testklasse initialisiert wird. Für Python2.6 und niedriger können Sie diese Methoden verwenden, indem Sie ein Modul namens unittest2 importieren.

Codevorlage

Punkt

# -*- coding: utf-8 -*-
import os, sys, unittest

class Sample():
	"""Zu testende Klasse"""
	#Zu testende Methode
	def return_hoge(self):
		return 'hoge'

	#Zu testende Methode
	def return_poyo(self):
		return 'poyo'

class SampleTest(unittest.TestCase):
	"""Eine Testklasse, die eine Klasse testet"""
	CLS_VAL = 'none'

	#Wird nur einmal aufgerufen, wenn die Testklasse initialisiert wird(python2.7 oder mehr)
	@classmethod
	def setUpClass(cls):
		if sys.flags.debug: print('> setUpClass method is called.')
		#Führen Sie umfangreiche Verarbeitungsmethoden aus, um sich auf das Testen vorzubereiten
		cls.CLS_VAL = '> setUpClass : initialized!'
		if sys.flags.debug: print(cls.CLS_VAL)

	#Wird nur einmal aufgerufen, wenn die Testklasse freigegeben wird(python2.7 oder mehr)
	@classmethod
	def tearDownClass(cls):
		if sys.flags.debug: print('> tearDownClass method is called.')
		#Geben Sie das von setUpClass vorbereitete Objekt frei
		cls.CLS_VAL = '> tearDownClass : released!'
		if sys.flags.debug: print(cls.CLS_VAL)

	#Wird jedes Mal aufgerufen, wenn Sie eine Testmethode ausführen
	def setUp(self):
		if sys.flags.debug: print(os.linesep + '> setUp method is called.')
		#Führen Sie einen leichten Prozess durch, um sich auf den Test vorzubereiten
		self.smpl = Sample()

	#Wird nach jeder Ausführung der Testmethode aufgerufen
	def tearDown(self):
		if sys.flags.debug: print(os.linesep + '> tearDown method is called.')
		#Geben Sie das von setUp vorbereitete Objekt frei

	def test_hoge(self):
		expected = 'hoge'
		actual = self.smpl.return_hoge()
		self.assertEqual(expected, actual)

	def test_poyo(self):
		expected = 'poyo'
		actual = self.smpl.return_hoge() #Häufiger Fehler
		self.assertEqual(expected, actual)

if __name__ == '__main__':
	#Lauf unittest
	unittest.main()

Von gitHub

Ausführungsergebnis

Setzen Sie das Flag -d, wenn Sie ein Python-Skript ausführen, um in den Debug-Modus zu wechseln. (sys.flags.debug wird wahr sein.)

python -d /Users/you/Desktop/sample.py

> setUpClass method is called.
> setUpClass : heavy method

> setUp method is called.

> tearDown method is called.
.
> setUp method is called.
F
> tearDown method is called.
> tearDownClass method is called.
> tearDownClass : released

======================================================================
FAIL: test_poyo (__main__.SampleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/you/Desktop/sample.py", line 54, in test_poyo
    self.assertEqual(expected, actual)
AssertionError: 'poyo' != 'hoge'

----------------------------------------------------------------------
Ran 2 tests in 0.001s

FAILED (failures=1)

Ausgabe, wenn nicht im Debug-Modus

 python /Users/you/Desktop/sample.py
.F
======================================================================
FAIL: test_poyo (__main__.SampleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/you/Desktop/sample.py", line 54, in test_poyo
    self.assertEqual(expected, actual)
AssertionError: 'poyo' != 'hoge'

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=1)

Appendix

Ich glaube nicht, dass es in kleinen Skripten häufig verwendet wird, aber wenn Sie es brauchen, gibt es auch eine Initialisierungsmethode für jedes Modul wie setUpModule.

Recommended Posts

Python-Unit-Test-Vorlage
Python-Vorlage für Codeforces-manuelle Test-
Unit Test Log Ausgabe mit Python
Python-Integritätstest
Python Argparse Vorlage
Python-Unit-Test
[Python] Tkinter-Vorlage
Primzahlbeurteilung durch Python
Primzahlbeurteilung mit Python
[Python] Was ich getan habe, um Unit Test zu machen
Python Basic 8 Numpy Test
Wettbewerbsfähige Pro-Vorlage (Python)
Python-Testpaket-Memo
Primzahlbeurteilung mit Python
Python Unit Test Library Einführung in die Nasenoption-19 Typen-
Python-Datenanalysevorlage
Jinja2 | Python-Vorlagen-Engine
Python-Tag-Kooperationstest
Führen Sie einen Komponententest des Databricks Notebook durch
Python Template Engine Empy
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Algorithmus in Python (Haupturteil)
Testen Sie den Kolben mit einem Pytest
Python-Debug- und Testmodul
[Python] Competitive Pro-Vorlage [At Coder]
Stellen Sie den Python-Test in Jenkins ein
Python Design Pattern - Template-Methode
Python
AtCoder: Python: Papa der Beispieltest.
Prüfung
[Python] Testbeispiel mit unittest2, mock
Schreiben Sie Selentestcode in Python
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Erstelltes AtCoder-Testtool für Python
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Vorlage AtCoder ABC 179 Python (A ~ E)
[Pytest] [mock] Anfänger in der Webentwicklung fassten den Unit-Test und den Mock in Python zusammen.
Schreiben Sie einen C-Sprach-Unit-Test in Python
Blender 2.9, Python-Hintergrundlicht-Farbtest
Vorlage
Testen Sie nicht funktionalisierte Python-Programme mit GitLab CI
Der Forscher eines Pharmaunternehmens fasste den Python-Unit-Test zusammen
WebUI-Test mit Python2.6 + Selenium 2.44.0 - Profileinstellung
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Generieren Sie japanische Testdaten mit Python faker
Vorlage zum Schreiben von Batch-Skripten in Python
Wie man einen Taschentest mit Python macht
Integration mit setuptools / python setup.py test / pytest-runder
Die Python-Projektvorlage, an die ich denke.
Django Tutorial (Blog App erstellen) ④ --Einheitentest
python setup.py testet den Code mit Multiprocess
Führen Sie den Python-WSGI-Server auf der NGINX-Einheit aus