Frage

ich erschuf Benutzerdefinierte Django-Admin-Befehle

Aber ich weiß nicht, wie ich es testen soll Standard -Django -Tests

War es hilfreich?

Lösung

Wenn Sie ein Decktool verwenden, wäre es gut, es aus dem Code mit:

from django.core.management import call_command
from django.test import TestCase

class CommandsTestCase(TestCase):
    def test_mycommand(self):
        " Test my custom command."

        args = []
        opts = {}
        call_command('mycommand', *args, **opts)

        # Some Asserts.

Andere Tipps

Sie sollten Ihr tatsächliches Befehlskript zum Minimum ermöglichen, damit es nur eine Funktion an anderer Stelle aufruft. Die Funktion kann dann als normal über Unit -Tests oder Dokten getestet werden.

Sie können in Github.com Beispiel sehensiehe hier

def test_command_style(self):
    out = StringIO()
    management.call_command('dance', style='Jive', stdout=out)
    self.assertEquals(out.getvalue(),
        "I don't feel like dancing Jive.")

Eine einfache Alternative zu Stdout analysieren soll Ihren Verwaltungsbefehl mit einem Fehlercode beenden, wenn er nicht erfolgreich ausgeführt wird, beispielsweise mit sys.exit (1).

Sie können dies in einem Test mit:

    with self.assertRaises(SystemExit):
        call_command('mycommand')

Ich stimme Daniel zu, dass das tatsächliche Befehlskript das Minimum möglich machen sollte, aber Sie können es auch direkt in einem Django -Unit -Test testen os.popen4.

Innerhalb Ihres Unit -Tests können Sie einen Befehl wie haben

fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()

Sie können dann den Ergebnisinhalt analysieren, um zu testen, ob Ihr Django -Befehl erfolgreich war.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top