Quelles sont les différences entre setUpClass
, setUpTestData
et setUp
dans la classe TestCase
?
Plus précisément, quels sont les cas d'utilisation pour chacun?
Ce que j'ai compris jusqu'à présent:
D'après la compréhension que j'ai mentionnée ci-dessus, il semble que setUpTestData se situe dans la zone entre setUpClass et setUp. Pourquoi avons-nous besoin d'une méthode au niveau de la classe pour setuUpTestData alors que le même effet peut être obtenu par setUpClass
ou setUp
ou une combinaison des deux?
EDIT: Mise à jour/Correction après le commentaire d'Alasdair
setUpClass
est utilisé pour effectuer une initialisation/configuration à l'échelle de la classe (par exemple, création de connexions, chargement de pilotes Web). Lorsque vous utilisez setUpClass
par exemple pour ouvrir une connexion/session de base de données, vous pouvez utiliser tearDownClass
pour les fermer.setUpClass
est appelé une fois pour le TestCase avant d'exécuter l'un des tests. De même tearDownClass
est appelé une fois tous les tests exécutés.Note de la documentation:
SimpleTestCase et ses sous-classes (par exemple TestCase, ...) s'appuient sur setUpClass () et tearDownClass () pour effectuer une initialisation à l'échelle de la classe (par exemple, remplacer les paramètres). Si vous devez remplacer ces méthodes, n'oubliez pas d'appeler la super implémentation:
setUpTestData
est utilisé pour créer les données de test initiales par TestCase. Cette méthode est appelée par TestCase.setUpClass () ( src )setUpTestData
est appelé est une fois pour TestCase, comme expliqué dans documentation . Si les bases de données ne prennent pas en charge les transactions, setUpTestData
sera appelé avant chaque test (merci @Alasdair de m'avoir corrigé)setUp
sera appelé avant chaque test et devrait être utilisé pour préparer le jeu de données de test pour chaque test.L'utilisation de setUpTestData
permet d'améliorer les performances des tests, sachez que la modification de ces données dans les tests persistera entre les différents tests. S'il doit être rechargé, cela peut être fait à partir de la méthode setUp
. Si la base de données utilisée pour exécuter les tests ne prend pas en charge les transactions, l'amélioration des performances est annulée (car setUpTestData
sera appelé avant chaque exécution de test)