擅长:python、mysql、java
<p>我喜欢在需要芹菜结果才能完成的测试上使用override_settings装饰符。</p>
<pre><code>from django.test import TestCase
from django.test.utils import override_settings
from myapp.tasks import mytask
class AddTestCase(TestCase):
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
CELERY_ALWAYS_EAGER=True,
BROKER_BACKEND='memory')
def test_mytask(self):
result = mytask.delay()
self.assertTrue(result.successful())
</code></pre>
<p>如果要将此应用于所有测试,可以使用<a href="http://docs.celeryproject.org/en/2.5/django/unit-testing.html">http://docs.celeryproject.org/en/2.5/django/unit-testing.html</a>中描述的芹菜测试运行器,它基本上设置了除(<code>BROKER_BACKEND = 'memory'</code>)之外的相同设置。</p>
<p>在“设置”中:</p>
<pre><code>TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner'
</code></pre>
<p>看看芹菜SuiteRunner的来源,很清楚发生了什么。</p>