[PYTHON] J'ai essayé de déboguer.

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! !!

Déboguer avec pdb

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

Les références

Conseils de débogage Python Code de test Python le plus court à essayer

Recommended Posts

J'ai essayé de déboguer.
J'ai essayé d'apprendre PredNet
J'ai essayé d'organiser SVM.
J'ai essayé d'implémenter PCANet
J'ai essayé de réintroduire Linux
J'ai essayé de présenter Pylint
J'ai essayé de résumer SparseMatrix
jupyter je l'ai touché
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé d'implémenter Deep VQE
J'ai essayé de créer l'API Quip
J'ai essayé de mettre en place une validation contradictoire
J'ai essayé d'expliquer l'ensemble de données de Pytorch
J'ai essayé l'authentification vocale Watson (Speech to Text)
J'ai touché l'API de Tesla
J'ai essayé de m'organiser à propos de MCMC.
J'ai essayé d'implémenter Realness GAN
Je veux déboguer avec Python
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé de gratter
J'ai essayé PyQ
J'ai essayé AutoKeras
J'ai essayé le moulin à papier
J'ai essayé django-slack
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé cgo
J'ai essayé de créer un linebot (implémentation)
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de résumer la commande umask
J'ai essayé d'implémenter la permutation en Python
J'ai essayé de créer un linebot (préparation)
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de reconnaître le mot de réveil
J'ai essayé de commencer avec Hy
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'ajouter un post-incrément à l'implémentation CPython
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé de laisser optuna résoudre le nombre
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
J'ai essayé d'implémenter PPO en Python
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai créé une API Web
J'ai essayé de résoudre TSP avec QAOA
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
J'ai fait de mon mieux pour retourner au Lasso
J'ai essayé de résumer les modules d'Ansible - l'édition Linux
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse