# Programmation Python/Tests
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]

## Tests unitaires

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

### Syntaxe

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

Si le test est dans le fichier TestClass dossier tests/ :
ou
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
#### Pywikibot

Le framework Pywikipedia propose toute une série de tests basés sur unittest.
* Le télécharger sur http://tools.wmflabs.org/pywikibot/
* Conformément au manuel tests/README.rst, lancer python pwb.py tests/api_tests.py -v.

## Tests fonctionnels

Il existe le framework pytest.

## Références

* ↑ http://docs.python.org/library/unittest.html
* ↑ https://docs.pytest.org/en/7.2.x/