Ich hätte gerne ein Python-Modul mit einigen Komponententests, die ich an hg bisect --command
weitergeben kann.Wie Setup und Teardown temporäre Django Db für Komponententests?
die Unit-Tests testen einige Funktionen eines django app, aber ich glaube nicht, dass ich hg bisect --command manage.py test mytestapp
weil mytestapp
in settings.py aktiviert hätte verwenden können, und die Änderungen an settings.py verprügelt werden würden, wenn hg bisect
aktualisiert das Arbeitsverzeichnis.
Deshalb würde ich gerne wissen, ob so etwas wie die folgende ist der beste Weg zu gehen:
import functools, os, sys, unittest
sys.path.append(path_to_myproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
def with_test_db(func):
"""Decorator to setup and teardown test db."""
@functools.wraps
def wrapper(*args, **kwargs):
try:
# Set up temporary django db
func(*args, **kwargs)
finally:
# Tear down temporary django db
class TestCase(unittest.TestCase):
@with_test_db
def test(self):
# Do some tests using the temporary django db
self.fail('Mark this revision as bad.')
if '__main__' == __name__:
unittest.main()
ich sollte die meisten dankbar, wenn Sie entweder beraten könnten:
- Wenn es ein einfacherer Weg, möglicherweise Unterklasse
django.test.TestCase
, aber nicht editieren von settings.py oder, wenn nicht; - Was die Zeilen oben sagen, dass "temporäre django db einrichten" und "Teal down temporäre django db" sollte sein?
+1 für die endgültige Lösung. –
Danke. Ich hoffe, dass dies anderen zeigt, wie man die django-Testdatenbank für beliebige Einzeltests, einschließlich Nasentests, aufbaut. – blokeley