TeamCity, Django und Tests

Gespeichert von jens am/um 11. Januar 2010 - 18:44

Wer TeamCity nutzt und mal was mit Django macht, der ärgert sich sicherlich, daß TeamCity per se nur Java unterstützt und es kein offizielles Plugin für Python gibt.

Dem kann jedoch Abhilfe geschaffen werden.

  1. Die folgende Erweiterung für Python installieren: http://pypi.python.org/pypi/teamcity-messages
  2. Die Datei django/test/simple.py nach Mein Projekt/Meine Anwendung/tests.py kopieren.
  3. Die eben kopierte Datei folgendermaßen anpassen:
    
    from teamcity import underTeamcity
    from teamcity.unittestpy import TeamcityTestRunner
    ...
        connection.creation.create_test_db(verbosity, autoclobber=not interactive)
        if underTeamcity():
            result = TeamcityTestRunner().run(suite)
        else:
            result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
        connection.creation.destroy_test_db(old_name, verbosity)
    ...
    
    
  4. In der Datei Mein Projekt/settings.py die Zeile
    
    TEST_RUNNER = 'Meine Anwendung.tests.run_tests'
    
    

    einfügen.

  5. Zu guter Letzt konfiguriert man den Testrunner unter TeamCity so, daß als Befehl python manage.py test aufgerufen wird.

Wenn man auf dem selben Server testet, auf dem die Applikation evtl. auch schon läuft und Logdateien benutzt, sollte eine separate settings.py für TeamCity erstellt werden (z.B. tc-settings.py). In dieser Datei kann man dann separate Logdateien definieren, damit es keine Fehlermeldungen hinsichtlich der Zugriffsrechte gibt.

Der Aufruf für den Testrunner muß dann python manage.py test --settings=tc-settings lauten.