salut! Je pense que je vais pratiquer le débogage cette fois. Conseils de débogage Python Code de test Python le plus court à essayer Je ne fais que copier et essayer, alors s'il vous plaît voir ici pour plus de détails! !!
Commencez par déboguer avec pdb. Voici le code utilisé pour le débogage.
import pdb;
for ii in range(1, 21):
if ii % 15 == 0:
print('Takeuchi Tsuyoshi')
elif ii % 3 == 0:
print('Takeuchi')
elif ii % 5 == 0:
print('Tsuyoshi')
else:
print(ii)
Commencez-le en premier.
python -m nom de fichier pdb
Si vous tapez la commande "n", elle sera exécutée ligne par ligne.
(Pdb) n
> /home/takeuchi/test.py(4)<module>()
-> for ii in range(1, 21):
(Pdb) n
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) n
> /home/takeuchi/test.py(7)<module>()
-
> elif ii % 3 == 0:
(Pdb)
Ensuite, lorsque vous tapez la commande "c", le processus se déroule en une seule fois au lieu de ligne par ligne.
> /home/takeuchi/test.py(4)<module>()
-> for ii in range(1, 21):
(Pdb) c
Takeuchi
4
Tsuyoshi
Takeuchi
7
8
Takeuchi
Tsuyoshi
11
Takeuchi
13
14
Takeuchi Tsuyoshi
16
17
Takeuchi
19
Tsuyoshi
The program finished and will be restarted
> /home/takeuchi/test.py(1)<module>()
-> import pdb;
(Pdb)
Vous pouvez spécifier un point d'arrêt avec b et vérifier le traitement jusqu'à ce point. À titre d'essai, exécutons le traitement jusqu'à la première branche de l'instruction if. Il a été produit correctement.
(Pdb) b 5
Breakpoint 1 at /home/takeuchi/test.py:5
(Pdb) c
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
1
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
2
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Takeuchi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
4
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Tsuyoshi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb)
Takeuchi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
c(Pdb) c
7
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
8
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Takeuchi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Tsuyoshi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
11
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Takeuchi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
13
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
14
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb) c
Takeuchi Tsuyoshi
> /home/takeuchi/test.py(5)<module>()
-> if ii % 15 == 0:
(Pdb)
(Pdb) b 5, ii == 15
Ce faisant, le traitement ne s'arrêtera que lorsque ii est égal à 15.
Ensuite, je voudrais exécuter le test de la même manière. Ceci est également une copie, donc si vous voulez en savoir plus, veuillez consulter Référence.
test2.py
import unittest
import test as tt
class FizzBuzzTest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_normal(self):
self.assertEqual(1, tt.fizzbuzz(1))
def test_fizz(self):
self.assertEqual("Tsuyoshi", tt.fizzbuzz(3))
def test_buzz(self):
self.assertEqual("Takeuchi", tt.fizzbuzz(5))
def test_fizzbuzz(self):
self.assertEqual("Takeuchi Tsuyoshi", tt.fizzbuzz(15))
if __name__ == "__main__":
unittest.main()
def setUp (self)
et def tearDown (self)
semblent être des fonctions qui s'exécutent au moment de l'initialisation / de la fin.
ʻAssertEqual () `vérifie si les premier et deuxième arguments ont la même valeur.
Et ce qui suit est le test.py importé.
test.py
def fizzbuzz(number):
if number % 15 == 0:
return "Takeuchi Tsuyoshi"
if number % 5 == 0:
return "Takeuchi"
if number % 3 == 0:
return "Tsuyoshi"
return number
if __name__ == "__main__":
for i in range(1, 101):
print(fizzbuzz(i))
Le résultat de l'exécution est le suivant! !!
❯ python test2.py
....
----------------------------------------------------------------------
Ran 4 tests in 0.001s
OK
Conseils de débogage Python Code de test Python le plus court à essayer
Recommended Posts