Ich benutze Sellerie 3.1.11 mit Django 1.6. Ich habe gesucht, aber ich bin nicht in der Lage, eine Menge Fragen aus der jüngsten Vergangenheit über Sellerie zu finden (3,1)Unit Testing mit Django in Sellerie 3.1.11?
I Unit-Tests durch manage.py zu laufen bin versucht.
>> python manage.py test calculationApp
in meinem tests.py für calculationApp erstelle ich die Aufgabe:
c = calculateCarbon.delay(project.id)
r = AsyncResult(c.id).ready()
print "c.backend: %s" % (c.backend)
print "AsyncResult(c.id).ready(): %s" % (r)
print "AsyncResult(c.id).state: %s" % (AsyncResult(c.id).state)
print "AsyncResult(c.id).result: %s" % (AsyncResult(c.id).result)
while not r:
r = AsyncResult(c.id).ready()
Wenn ich das Gerät Test ausführen, der Test im Test stecken bleibt und ist nie fertig (es wird nie vorbei an der while-Schleife), erhalte ich diese als Ausgabe:
/usr/lib/python2.7/dist-packages/numpy/core/_methods.py:96: RuntimeWarning: invalid value encountered in double_scalars
ret = ret/float(rcount)
c.backend: None
AsyncResult(c.id).ready(): False
AsyncResult(c.id).state: PENDING
AsyncResult(c.id).result: None
An diesem Punkt muss ich zweimal STRG + C drücken.
Ich las Celery 3.0 Docs - Unit Testing, die mir gesagt, zu setzen.
CELERY_ALWAYS_EAGER = True
TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner'
Ist dies immer noch für Sellerie 3.1.11 gültig? Ich kann keine relevante Dokumentation für Sellery 3.1 über Django-Komponententests finden, und ich bin nicht sicher, ob diese Einstellungen hilfreich oder schädlich sind, da das Backend für die Aufgabe keine zurückgibt, wenn ich diese setze, aber die Berechnungen scheinen tatsächlich ausgeführt zu werden .
Wenn ich diese beiden Zeilen entfernen Sie die Einstellungsdatei ich diese Ergebnisse erhalten:
c.backend: <celery.backends.amqp.AMQPBackend object at 0x7a4de50>
AsyncResult(c.id).ready(): False
AsyncResult(c.id).state: PENDING
AsyncResult(c.id).result: None
AsyncResult(c.id).ready(): True
AsyncResult(c.id).state: FAILURE
AsyncResult(c.id).result: task args must be a list or tuple
======================================================================
FAIL: test_calculations (measuring.tests.TestCalculations)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/var/www/project/calculationApp/tests.py", line 70, in test_calculations
self.assertEqual(int(number.attribute), 2212)
AssertionError: 0 != 2212
----------------------------------------------------------------------
Ran 1 test in 2.765s
Ich habe gerade versucht, meine Komponententests für meine Anwendung auszuführen, nicht testen, ob Sellerie funktioniert. Ich habe einfach verschiedene Werte ausgedruckt, um zu verstehen, was in Sellerie vor sich ging. – skullkid