Si vous en savez beaucoup, vous pouvez écrire du code de test Python! ~ Super édition d'introduction ~

Et si je lis cet article

Après avoir lu cet article, l'article aidera les lecteurs à atteindre les trois objectifs suivants.

  1. Comprendre l'importance du test du code source
  2. Découvrez comment écrire du code de test Python
  3. Un seul fichier avec un code de test écrit en Python peut être exécuté.

Environnement d'exécution

OS: macOS Mojava 10.14.6 Version Python: 3.7.1

Importance de l'écriture du code de test

Des tests sont écrits ** pour garantir la qualité du code source. ** **

Pouvez-vous faire confiance au code source qui vous a été transmis quand on vous a dit que vous aviez écrit le code source parfait sans aucun bogue? S'il y a des gens qui ne font aucune erreur, vous pouvez leur faire confiance. Mais les gens font souvent des erreurs.

Si le test est écrit dans une certaine mesure, vous pouvez ** faire confiance à la qualité du code source **. De plus, si vous avez un test, vous pouvez l'utiliser comme critère pour juger si le code source est fait correctement **.

Maintenant, écrivons le test en Python!

Rédiger un test de la méthode pour calculer l'engagement maximum

1. Spécifications de la méthode à tester

Considérez une méthode qui calcule l'engagement maximum à tester. L'engagement maximum en anglais est * Greatest Common Divisor *. Prenons l'acronyme et nommons le fichier gcd.py.

gcd.py


def gcd(a, b):
    #D'une manière ou d'une autre,Calculez la contribution maximale de b
    return #La valeur de retour est l'engagement maximum

Les arguments a et b de gcd () supposent qu'un entier est entré et renvoient l'engagement maximum de a et b comme valeur de retour.

Maintenant que les spécifications de la fonction à tester sont fixées, écrivons le code de test.

2. C'est ʻimport` pour écrire du code de test!

Cette fois, nous utilisons un module appelé ʻunit test` pour écrire du code de test en Python. Puisqu'il est installé en standard, il n'est pas nécessaire de l'installer. Importons-le immédiatement.

test_gcd.py


import unittest
from gcd import gcd 

Importons également la fonction «gcd» de «gcd.py» pour tester le gcd () que nous testons. Vous êtes maintenant prêt à écrire votre code de test.

3. Créez un scénario de test

Ensuite, nous allons créer un cas de test.

Un cas de test est une ** entrée et une ou plusieurs définitions de la sortie attendue de l'entrée ** pour garantir que la fonctionnalité d'un module ou d'une classe fonctionne correctement.

Tout d'abord, créez une classe qui contient des cas de test.

test_gcd.py


import unittest
from gcd import gcd 

class GCDTest(unittest.TestCase):
    pass

** Les cas de test sont déclarés en héritant de la classe TestCase du module unittest **.

En héritant de ʻunittest.TestCase`, vous pourrez utiliser les méthodes requises pour créer un cas de test.

Le nom de la classe (nom du cas de test) teste l'engagement maximum, j'ai donc choisi GCDTest.

4. Rédigez un test

Écrivons maintenant un test pour la méthode qui calcule l'engagement maximum.

test_gcd.py


import unittest
from gcd import gcd 

class GCDTest(unittest.TestCase):
    def test_gcd(self):
        self.assertEqual(15, gcd(30, 15))
        pass

Implémentation d'une méthode appelée test_gcd.

Cette fois, nous voulons implémenter une méthode qui calcule la promesse maximale de deux entiers, donc si a = 30, b = 15 est entré, la valeur de retour doit être 15.

Vérifier ceci est self.assertEqual (15, gcd (30, 15)). Nous avons confirmé que le résultat de «gcd (30, 15)» est «15».

Le mot anglais assert est facile à comprendre étant donné que c'est un mot qui signifie quelque chose comme «assert». self.assertEqual (15, pgcd (30, 15)) affirme que "le résultat de pgcd (30,15) est égal à 15." C'est facile à comprendre.

5. Lançons le test

Utilisez la commande suivante pour exécuter le test.

.sh


python -m unittest `Nom du module créé`

Le module créé cette fois est test_gcd.py. Spécifiez test_gcd.py et essayez de l'exécuter.

.sh


python -m unittest test_gcd.py

Résultat d'exécution スクリーンショット 2020-02-05 15.02.08.png

Il a échoué, mais c'est naturel parce qu'il n'a pas été mis en œuvre. Il montre où le test a échoué, le nombre de tests exécutés, le temps d'exécution, etc.

Implémentons la méthode gcd et exécutons-la à nouveau.

gcd.py


def gcd(a, b):
    return b if a%b == 0 else gcd(b, a%b)

Pour l'implémentation, nous utilisons la méthode de division mutuelle euclidienne. La méthode de division mutuelle euclidienne est un algorithme qui peut trouver l'engagement maximal à grande vitesse. Je ne vais pas y toucher ici, donc si vous êtes intéressé, veuillez le vérifier.

Maintenant que vous l'avez implémenté, lancez python -m unittest test_gcd.py! スクリーンショット 2020-02-05 15.14.55.png

Le test a réussi, il a donc été affiché comme OK. Tu l'as fait.

Soyez prudent lors de la rédaction des tests

Le seul test que j'ai écrit cette fois était «self.assertEqual (15, gcd (30, 15))». Est-ce suffisant comme cas de test?

La réponse est non. On ne peut pas dire que la méthode cible est correctement implémentée avec une seule vérification. C'est parce que les éléments de contrôle seuls réussiront le scénario de test même avec l'implémentation suivante.

gcd.py


def gcd(a, b):
    return 15

Cela signifie que l'engagement maximum est de 15 pour toute entrée.

Lors de l'écriture d'un cas test, ** pensez à ce que sont les modèles d'entrée et de sortie et essayez de les couvrir **.

Résumé

-Des tests sont écrits pour garantir la qualité du code source · Utilisez le module ʻunit test pour créer des tests Python -Lors de la création d'un cas de test, hérite de ʻunittest.TestCase. -Un cas de test est un blocage entre l'entrée et la sortie attendue de l'entrée. -Vous pouvez exécuter le cas de test du fichier correspondant avec python -m unittest nom du module ・ Considérez le type de modèles d'entrée et de sortie des cas de test et assurez-vous qu'ils sont entièrement couverts.

Article suivant

Le contenu de cet article a été rédigé dans l'optique d'en avoir une idée. Par conséquent, il n'y a aucune mention de manières détaillées.

Cela sera couvert dans le prochain article.

Coming Soon!

Recommended Posts

Si vous en savez beaucoup, vous pouvez écrire du code de test Python! ~ Super édition d'introduction ~
Comme vous le savez peut-être, Python peut être écrit comme ceci
Si vous écrivez TinderBot en Python, elle peut le faire
Code Python qui continue de tweeter "Bals" autant que vous le pouvez
Ecrire le code de test du sélénium en python
Vous devez savoir si vous utilisez Python! 10 bibliothèques utiles
Écrire du code dans UnitTest une application Web Python
Combien connaissez-vous les bases de Python?
Si vous ne comprenez pas les symboles mathématiques, vous pouvez écrire un programme.
Si __name__ == Levez la main, si vous écrivez le code sous '__ main__'
Si vous écrivez un test piloté par table go en python, il peut être préférable d'utiliser subTest