Anfänger in der Webentwicklung haben Unit-Tests von pytest
und Mock von Django mock queries
gelernt, daher werden wir ihn ausgeben.
Ein ** Komponententest ** ist ein Test, der bestätigt, dass ein relativ kleiner Baustein (normalerweise eine Funktion oder Methode) ordnungsgemäß funktioniert. ** mock ** dient zum Festlegen des Werts der Komponente, die zum Testen des Programms auf Pseudo-Weise erforderlich ist.
Wie Sie in kleinen Struktureinheiten lesen und überprüfen können, ** leicht zu identifizierende Fehler **. Da der Testfall als Methode belassen werden kann, kann derselbe Test auch dann ** reproduziert ** werden, wenn sich das Programm ändert.
Selbst wenn die zum Testen einer bestimmten Klasse X erforderliche Klasse Y unvollständig ist, kann Mock zum Testen der Klasse X verwendet werden. Kurz gesagt, Sie können die Effizienz von ** Unit Test ** erhöhen.
Erstens ist das Zielprogramm für den Komponententest eine leicht modifizierte Antwort auf das Problem des AtCoder Begginers Contest 141 E Wer sagt ein Wortspiel?. Ich werde.
qiita.py
def length(n, s):
res = 0
i,j = 0, 1
while j < n:
if s[i:j] in s[j:]:
res = max(res, j-i)
j += 1
else:
i += 1
if i == j:
i += 1
j += 2
return res
Bereiten Sie als Nächstes ein Programm für den Komponententest vor.
test_qiita.py
from qiita import length
def test_1_ac():
assert length(5, 'ababa') == 2
def test_1_wa():
assert length(5, 'ababa') == 0
def test_2_ac():
assert length(2, 'xy') == 0
def test_2_wa():
assert length(2, 'xy') == 7
def test_3_ac():
assert length(13, 'strangeorange') == 5
def test_3_wa():
assert length(13, 'strangeorange') == 6
Führen Sie pytest aus.
$pytest test_qiita.py
Ausführungsergebnis:
======================================= test session starts =======================================
platform win32 -- Python 3.7.4, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
rootdir: C:/Users/~/qiita
plugins: arraydiff-0.3, cov-2.8.1, doctestplus-0.4.0, openfiles-0.4.0, remotedata-0.3.2
collected 6 items
test_qiita.py .F.F.F [100%]
============================================ FAILURES =============================================
____________________________________________ test_1_wa ____________________________________________
def test_1_wa():
> assert length(5, 'ababa') == 0
E AssertionError: assert 2 == 0
E + where 2 = length(5, 'ababa')
test_qiita.py:7: AssertionError
____________________________________________ test_2_wa ____________________________________________
def test_2_wa():
> assert length(2, 'xy') == 7
E AssertionError: assert 0 == 7
E + where 0 = length(2, 'xy')
test_qiita.py:13: AssertionError
____________________________________________ test_3_wa ____________________________________________
def test_3_wa():
> assert length(13, 'strangeorange') == 6
E AssertionError: assert 5 == 6
E + where 5 = length(13, 'strangeorange')
test_qiita.py:19: AssertionError
=================================== 3 failed, 3 passed in 0.11s ===================================
Er fand die falsche Antwort.
Es erweist sich als sehr nützlich zu sehen, ob die Teilverarbeitung (Funktionen) die erwartete Antwort zurückgibt, insbesondere in großen Programmen. Ich möchte es aktiv für die Funktionsprüfung und das Debuggen während der Entwicklung verwenden.
Recommended Posts