Pour autant que je sache, il est possible d'exécuter des tests pour toutes les applications installées ou une seule application. Tester toutes les applications semble être une exagération car il contient généralement également des modules natifs de Django (django.contrib.auth etc.). Est-il possible de créer une suite de tests contenant uniquement les applications que je spécifie (qui co-contiendrait tous les tests de toutes les applications dans mon dossier de projet dans mon cas)?

4
Ondrej Slinták 19 nov. 2011 à 16:23

3 réponses

Meilleure réponse

Vous pouvez écrire un lanceur de test personnalisé qui teste uniquement vos applications. dans le passé, j'ai utilisé quelque chose comme

tests/runner.py:

from django.test.simple import DjangoTestSuiteRunner
from django.conf import settings

class AppsTestSuiteRunner(DjangoTestSuiteRunner):
    """ Override the default django 'test' command, include only
        apps that are part of this project
        (unless the apps are specified explicitly)
    """


    def run_tests(self, test_labels, extra_tests=None, **kwargs):
        if not test_labels:
            PROJECT_PREFIX = 'my_project.'
            test_labels = [app.replace(PROJECT_PREFIX, '')
                for app in settings.INSTALLED_APPS
                if app.startswith(PROJECT_PREFIX)]
        return super(AppsTestSuiteRunner, self).run_tests(
              test_labels, extra_tests, **kwargs)

Vous définissez ensuite cela comme votre testeur par défaut dans settings.py

TEST_RUNNER = 'my_project.tests.runner.AppsTestSuiteRunner'
6
second 19 nov. 2011 à 13:17

Utilisez le nose et le django nose

Après la configuration, lancez simplement

Test ./manage.py

Et il ne fera que tester vos applications.

1
Tarsis Azevedo 19 nov. 2011 à 23:14

Il semble que vous deviez exécuter les tests sans le lanceur de tests Django.

https://docs.djangoproject.com/en/dev/topics/testing/#running-tests-outside-the-test-runner

1
Acorn 19 nov. 2011 à 12:39