2014-02-26 8 views
7

Ich habe ein paar Django-Projekte, an denen ich arbeite, und ich verwende Jenkins für kontinuierliche Integration Zwecke. Ich habe dieses Arrangement eine Weile laufen lassen und es funktioniert gut.Lauftests mit Abdeckung mit django-jenkins

Ich würde gerne in der Lage sein, automatisierte Testberichte zu erstellen und Jenkins damit zu behandeln. Es sah für mich aus wie django-jenkins war der Weg dafür, also habe ich es installiert und coverage.

Hier die relevanten Abschnitte meines settings.py:

# Jenkins integration 
INSTALLED_APPS += ('django_jenkins',) 
JENKINS_TASKS = ( 
    'django_jenkins.tasks.with_coverage', 
    'django_jenkins.tasks.run_pylint', 
    'django_jenkins.tasks.django_tests', 
) 
PROJECT_APPS = ['myapp'] 

Nun, ich python manage.py jtest laufen kann, und es funktioniert wie erwartet. Allerdings, wenn ich laufen python manage.py jenkins, es Fehler:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 76, in load_command_class 
    return module.Command() 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django_jenkins/management/commands/__init__.py", line 61, in __init__ 
    for module_name in self.get_task_list()] 
    File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module 
    __import__(name) 
ImportError: No module named django_tests 

ich die Standard Django TestCase und LiveServerTestCase Klassen als Grundlage meiner Tests bin mit. Irgendeine Idee, wo ich hier falsch liege? Die Dokumentation scheint zu implizieren, django_tests wurde entfernt, aber ich kann keinen Hinweis darauf finden, wie Sie die Django-Tests jetzt ausführen.

Ich benutze Django 1.6.2.

Antwort

11

Nur realisiert, dass ich ein bisschen von einer Neptun war. Alles, was ich tun musste, war die django_tests Linie, wie diese fallen:

# Jenkins integration 
INSTALLED_APPS += ('django_jenkins',) 
JENKINS_TASKS = ( 
    'django_jenkins.tasks.with_coverage', 
    'django_jenkins.tasks.run_pylint', 
) 
PROJECT_APPS = ['myapp'] 

Und django-jenkins, ohne explizit die Tests laufen zu verlangen, dass es so tut.

5

Es gibt eine Änderung in der neuesten Version von django_jenkins (0.18.0), so dass die django_jenkins.tasks.with_coverage Jenkins Aufgabe wird auch nicht mehr benötigt.

Stattdessen Sie den Testlauf durchführen, wie folgt:

python manage.py jenkins --enable-coverage 

oder

python3 manage.py jenkins --enable-coverage 

Sie können GitHub Repo mehr auf das Projekt herausfinden.