2014-06-13 42 views
6

Crank 3.1.11'i Django 1.6 ile kullanıyorum. Arıyordum ama kereviz yaklaşık Yakın geçmişte bir çok soru bulmak mümkün değilim (3.1)Kereviz içinde Django ile Birim Test 3.1.11?

Ben manage.py yoluyla birim testler çalışılıyor

.

>> python manage.py test calculationApp 

calculationApp benim tests.py ben görev oluşturmak: Ben birim testi, test testinde sıkışmış ve hazır asla alır

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() 

(o süre döngü geçmiş geçmez), bu alın çıkış olarak:

/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 

Bu noktada iki kez CTRL + C'ye sahibim.

Celery 3.0 Docs - Unit Testing numarasını okudum.

CELERY_ALWAYS_EAGER = True 
TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner' 

Bu hala, kereviz 3.1.11 için geçerli mi? Django birim testi hakkında Celery 3.1 ile ilgili herhangi bir belge bulamıyorum ve bu ayarlara sahip olduğumda, görev için arka ucun hiçbiri dönmediğinden, bu ayarların yardımcı olmadığından veya zarar verdiğinden emin değilim, ancak hesaplamalar gerçekte yürütülüyor gibi görünüyor .

ayarları ben bu sonuçları elde dosyası gelen bu iki satırları kaldırın:

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 

cevap

2

gerçek hesaplama mantığı veya Kereviz çalışır gerçeğini test etmek çalışıyorsunuz? Bu iki farklı şeydir ve bence mantığınızı izole olarak test etmek için gerçekten çok uğraşmalısınız. Daha hızlı, daha geleceğe dair bir kanıt (eğer Kereviz'i başka bir şeyle değiştirmeye karar verirseniz) ve birçok şeyi basitleştirir. Her ikisini birlikte test etmede ısrar ederseniz, CELERY_ALWAYS_EAGER değerini yalnızca birim test bağlamında True olarak ayarlamak probleminizi çözmelidir.

Kereviz'i test etmenize gerek yok, çalışıyor ve kanıtlamak için kendi test paketine sahip.

+0

Sadece benim uygulama için birim testleri çalıştırmaya çalışıyordum, Kereviz çalışıyorsa test değil. Celery'de olup bitenleri anlamak için sadece görevin çeşitli değerlerini yazdırıyordum. – skullkid