Hallo! Ich denke, ich werde dieses Mal das Debuggen üben. Python-Debug-Tipps Kürzester Python-Testcode zum Ausprobieren Ich kopiere nur und versuche es, also siehe hier für Details! !!
Debuggen Sie zunächst mit pdb. Unten finden Sie den Code, der zum Debuggen verwendet wird.
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)
Starten Sie es zuerst.
python -m pdb Dateiname
Wenn Sie den Befehl "n" eingeben, wird er zeilenweise ausgeführt.
(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)
Wenn Sie dann den Befehl "c" eingeben, wird der Vorgang sofort und nicht zeilenweise fortgesetzt.
> /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)
Sie können mit b einen Haltepunkt angeben und die Verarbeitung bis zu diesem Punkt überprüfen. Führen Sie als Test die Verarbeitung bis zum ersten Zweig der if-Anweisung aus. Es wurde richtig ausgegeben.
(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
Auf diese Weise wird die Verarbeitung erst beendet, wenn ii 15 ist.
Als nächstes möchte ich den Test auf die gleiche Weise ausführen. Dies ist auch eine Kopie. Wenn Sie weitere Informationen wünschen, lesen Sie bitte Referenz.
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)
und def tearDown (self)
scheinen Funktionen zu sein, die zum Zeitpunkt der Initialisierung / des Endes ausgeführt werden.
assertEqual ()
prüft, ob das erste und das zweite Argument den gleichen Wert haben.
Und das Folgende ist die importierte test.py.
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))
Das Ausführungsergebnis ist wie folgt! !!
❯ python test2.py
....
----------------------------------------------------------------------
Ran 4 tests in 0.001s
OK
Python-Debug-Tipps Kürzester Python-Testcode zum Ausprobieren
Recommended Posts