Date Tags Django

Bon, à un moment, à force de faire des modifications sur son projet pour contenter "son" fan ;) Je ne pouvais pas rester à me limiter à faire tourner les tests sur 2 ou 3 applications django quand j'en fourni 10.

Donc actuellement (pour faire court), Django lance les tests sur tout ce qui commence par test*.py à partir du dossier courrant.

Problème :
J'ai 10 applications, et seules 2 sont installées (présentes dans settings.INSTALLED_APPS), et au lancement des tests on a droit à une erreur d'absence de table liée au model de son application X.

Pour que ça marche quand même, on est obligé de faire

./manage.py test -v2 app1 app2 app3 app4 ...

Pas top du tout à mon goût.

Je suis donc allé à la pèche et je n'ai rien trouvé que des besoins identiques

Du coup ce soir je me suis fendu d'un test assez simple et qui rempli tout à fait sa fonction.

La doc dit qu'il suffit de définir un TEST_RUNNER perso en fournissant la méthode run_tests(), et de l'indiquer dans le settings.py

et ca donne ceci :

settings.py :

TEST_RUNNER = 'django_th.runner.DiscoverRunnerTriggerHappy'

runner.py :

from django.conf import settings
from django.test.runner import DiscoverRunner


class DiscoverRunnerTriggerHappy(DiscoverRunner):
    """
    A Django test runner that uses unittest2 test discovery.
    """
    def run_tests(self, test_labels, extra_tests=None, **kwargs):
        """
        Run the unit tests for all the test labels in the provided list.

        Test labels are taken from settings.INSTALLED_APPS

        A list of 'extra' tests may also be provided; these tests
        will be added to the test suite.

        Returns the number of tests that failed.
        """
        self.setup_test_environment()
        for installed_app in settings.INSTALLED_APPS:
            test_labels = test_labels + (installed_app,)
        suite = self.build_suite(test_labels, extra_tests)
        old_config = self.setup_databases()
        result = self.run_suite(suite)
        self.teardown_databases(old_config)
        self.teardown_test_environment()
        return self.suite_result(suite, result)

Comments

comments powered by Disqus