Programmation Python/Tests

Un livre de Wikilivres.

Tests unitaires[modifier | modifier le wikicode]

La bibliothèque unittest[1] permet d'automatiser les tests unitaires.

Syntaxe[modifier | modifier le wikicode]

La méthode assertEqual() permet de vérifier la valeur deux deux objets, généralement une constante et une variable issue du code à tester :

import unittest

x = 1
y = 1
self.assertEqual(x, y)

Méthodes de tests possibles :

  • assertAlmostEqual(a, b)
  • assertEqual(a, b)
  • assertFalse(a)
  • assertIn(a, b)
  • assertIs(a, b)
  • assertIsInstance(a, b)
  • assertIsNone(a)
  • assertIsNot(a, b)
  • assertIsNotNone(a)
  • assertNotAlmostEqual(a, b)
  • assertNotEqual(a, b)
  • assertNotEqual(a, b)
  • assertNotIn(a, b)
  • assertNotIsInstance(a, b)
  • assertNotRegex(a, b)
  • assertRaises(a)
  • assertRaisesRegex(a)
  • assertRegex(a, b)
  • assertTrue(a)

Exécution[modifier | modifier le wikicode]

Si le test est dans le fichier TestClass dossier tests/ :

python -m unittest tests/TestClass.py

ou

python -m unittest tests.TestClass

Dans cette deuxième syntaxe, on peut aussi rajouter le nom de la méthode à tester après la classe.

Sinon, il existe plus rapide : dans PyCharm il suffit de cliquer sur le triangle vert situé dans la marge du test pour le lancer.

Exemples[modifier | modifier le wikicode]

Exemple simple[modifier | modifier le wikicode]

#!/usr/bin/env python
# coding: utf-8

import unittest
import tested_class


class TestClass(unittest.TestCase):

    def test_replace(self):
        test_input = 'test'
        test_output = 'Test'
        self.assertEqual(test_output, tested_class.replace(test_input))


if __name__ == '__main__':
    unittest.main()

Pywikibot[modifier | modifier le wikicode]

Le framework Pywikipedia propose toute une série de tests basés sur unittest.

  1. Le télécharger sur http://tools.wmflabs.org/pywikibot/
  2. Conformément au manuel tests/README.rst, lancer python pwb.py tests/api_tests.py -v.

Tests fonctionnels[modifier | modifier le wikicode]

Il existe le framework pytest[2].

Références[modifier | modifier le wikicode]