web-dev-qa-db-fra.com

Test dans Django: quelles sont les différences entre setUpClass, setUpTestData et setUp dans la classe TestCase?

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:

setUpClass

  • Cette méthode s'exécute une fois, avant tous les tests d'une classe de test

setUpTestData

  • Cette méthode s'exécute une fois si la base de données prend en charge les transactions. Sinon, il s'exécute avant chaque test.

installer

  • Cette méthode s'exécute avant chaque test dans une classe de test.

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?

19
Raiyan

EDIT: Mise à jour/Correction après le commentaire d'Alasdair

setUpClass

  • 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

  • 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é)

installer

  • 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)

19
Milan