Le test de votre code est une partie essentielle du cycle de vie du développement logiciel, et il doit toujours intervenir avant le déploiement de l'application en production. Le test est crucial car il permet de suivre et de trouver des bogues dans le code.
Le test est une méthode de vérification des unités individuelles de code source pour confirmer qu'il fonctionne de manière optimale avant d'expédier le code à la production. Il est important de noter que le déploiement du fichier source en production pour les utilisateurs n'est pas nécessaire lors des tests unitaires.
Il serait préférable que vous vous souveniez également que les tests ne sont pas spécifiques à Python.
Cet article vous apprendra à écrire des tests de base à l'aide de tests unitaires Python pour vérifier si votre code réussit ou échoue pendant les tests.
Pour terminer ce didacticiel, vous avez besoin des éléments suivants :
Les tests d'écriture sont des programmes logiques qu'un programmeur écrit pour tester une base de code. Pendant le développement, un AQ doit comprendre le processus pour mettre en évidence ce qui doit être amélioré dans l'application avant d'expédier le produit à l'utilisateur. Pour cela, écrivons une fonction qui additionne deux nombres et renvoie le résultat.
Pour commencer, créez un dossier contenant tous les fichiers pour écrire le test de ce tutoriel. Ajoutez un fichier nommé main.py
pour écrire la fonction dans ce nouveau dossier.
# main.py # Add the sum of two numbers def add_sum(num1, num2): return int(num1) + int(num2)
Maintenant que nous avons le bloc de code ci-dessus, vérifions que le code fonctionne en écrivant une fonction permettant aux utilisateurs d'entrer la valeur souhaitée via l'invite de saisie. La fonction add_sum()
prend deux nombres comme paramètres et renvoie la valeur en utilisant l'opérateur + signe pour obtenir la somme. Dans un autre fichier, result.py
, copiez et collez le code suivant :
# result.py from main import add_sum print("Please enter the two values\n") num1 = int(input("Please enter the first number: \n")) num2 = int(input("Please enter the second number: \n")) total = add_sum(num1, num2) print(f"The sum of the values is {total}")
Ce bloc de code effectue les opérations suivantes :
add_sum()
de main.py
int
Python est livré avec un module de bibliothèque standard intégré appelé unittest, qui fournit des outils pour construire et exécuter des tests pour votre code. L'objectif principal des tests unitaires est de vérifier si toutes les fonctions du code fonctionnent comme prévu.
Un cas de test est une manière standard de travailler avec un test unitaire, avec des fonctionnalités disponibles dans la classe de nom de test. En outre, un cas de test est essentiel dans le code du composant pour les tests unitaires individuels. Il utilise différentes méthodes d'assertion pour rechercher et signaler les échecs immédiatement après l'exécution du code.
Cette section concerne l'écriture d'une série de tests.
Avant de créer le fichier de test pour écrire tous les cas de test pour la fonction add_sum()
, mettons à jour le main.py
. Copiez et collez le code suivant :
# main.py def add_sum(num1, num2): try: return int(num1) + int(num2) except ValueError as err: return err
Le bloc de code utilise l'instruction try/except
qui gère les exceptions dans votre code et vous avertit en cas d'erreur dans le bloc except. Cette méthode de programmation aide à détecter les erreurs et vous indique le numéro de ligne spécifique où l'erreur s'est produite.
Maintenant, créez un fichier de test dans le même répertoire appelé test.py. Dans ce fichier, copiez et collez le code suivant :
# test.py import unittest from main import add_sum class MainTest(unittest.TestCase): def test_do_stuff(self): result = add_sum(5, 10) self.assertEqual(result, 15) if __name__ == '__main__': unittest.main()
Comme indiqué dans le bloc de code ci-dessus, les événements suivants se produisent :
N'oubliez pas de démarrer chaque méthode avec le "test_" car le test.py s'exécute automatiquement. **
**
Chaque fois que vous exécutez un test, toutes les vérifications sont censées réussir avec un message OK dans la console, ce qui signifie qu'il a réussi.
Ran 1 test in 0.000s OK
Pendant le développement et les tests, il devrait y avoir des scénarios d'échec. Cela montre que chaque programme a des vulnérabilités et des bogues.
Dans le même fichier, test.py
, modifions le code et collons ce qui suit :
# test.py import unittest from main import add_sum class MainTest(unittest.TestCase): # other test def test_do_stuff2(self): result = add_sum("hulu", 5) self.assertEqual(result, 5) if __name__ == '__main__': unittest.main()
Le résultat de l'exécution de ce code ressemble à ceci :
FAIL: test_do_stuff2 (__main__.MainTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "test.py", line 11, in test_do_stuff3 self.assertEqual(result, 5) AssertionError: ValueError("invalid literal for int() with base 10: 'hulu'") != 5
À partir de la sortie ci-dessus, les éléments suivants peuvent être résolus en lisant le code d'erreur et en corrigeant le code en conséquence :
Lorsque vous avez créé de nombreux fichiers et différents modules et que vous devez tous les tester simultanément au lieu d'essayer un seul fichier par défaut, vous pouvez utiliser cette commande pour exécuter tous les tests simultanément.
python3 -m unittest
De plus, pour obtenir plus de détails sur le test, utilisez la commande avec le drapeau -v (verbeux), qui vous montre les tests qui sont OK et ceux qui ont échoué.
python3 -m unittest -v
Le résultat ressemble à ceci :
test_do_stuff (test.MainTest) ... ok test_do_stuff2 (test.MainTest) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK
Les tests unitaires doivent être une pratique effectuée par les QA et les développeurs impliqués dans l'écriture et l'expédition du code chaque fois qu'une nouvelle fonctionnalité est publiée avant que les utilisateurs ne puissent utiliser l'application. Faire des tests régulièrement ou périodiquement ne doit pas être une réflexion après coup, mais plutôt renforcer la confiance dans le fonctionnement et l'efficacité de l'application.
Cet article vous a donné un aperçu des raisons pour lesquelles les tests sont essentiels dans le développement et comment utiliser les tests unitaires pour vérifier la fonction du code et répondre à une spécification standard pour les utilisateurs avant le déploiement en production.