Les débutants en développement Web ont appris le test unitaire par pytest '' et simulé par
Django mock queries '', nous allons donc le générer.
Le ** test unitaire ** est un test qui vérifie que les blocs de construction relativement petits (généralement des fonctions et des méthodes) d'un programme fonctionnent correctement. ** mock ** est de définir la valeur du composant requis pour tester le programme de manière pseudo.
Comme vous pouvez le lire et le vérifier dans de petites unités structurelles, ** erreurs faciles à identifier **. De plus, comme le cas de test peut être laissé comme méthode, le même test peut être ** reproduit ** même si le programme change.
Même si la classe Y requise pour tester une certaine classe X est incomplète, la simulation peut être utilisée pour tester la classe X. En bref, vous pouvez augmenter l'efficacité du ** test unitaire **.
Tout d'abord, le programme cible pour le test unitaire est une réponse légèrement différente au problème AtCoder Begginers Contest 141 E Who Says a Pun? Je vais.
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
Ensuite, préparez un programme pour le test unitaire.
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
Exécutez pytest.
$pytest test_qiita.py
Résultat de l'exécution:
======================================= 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 ===================================
Il a trouvé la mauvaise réponse.
Il s'avère très utile de voir si le traitement partiel (fonctions) renvoie la réponse attendue, en particulier dans les grands programmes. Je souhaite l'utiliser activement pour la vérification des opérations et le débogage pendant le développement.