我有一个使用django-nose的django项目。我想将django-celery添加到项目中。我使用单元测试。在我的settings.py文件中,django-nose和django-celery都需要一个TEST_RUNNER设置。具体地说:
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'对于django-nose和:
TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner'给姜戈-芹菜。
我应该如何处理才能同时使用这两个包?
发布于 2013-05-07 02:42:42
我发现处理这个问题的最好方法是跳过芹菜测试运行器。我只需使用@override_settings(CELERY_ALWAYS_EAGER=True)来装饰我的芹菜-使用测试,一切都会得到很好的测试。
发布于 2013-04-15 09:48:54
如果您能够将测试隔离为celery和非依赖于celery的功能,则可以在调用celery任务的测试类上尝试overriding settings:
from django.test.utils import override_settings
@override_settings(TEST_RUNNER='djcelery.contrib.test_runner.CeleryTestSuiteRunner')
class AsyncTestCase(TestCase):
def test_async(self):
self.assertEquals(add.delay(4,4), 8)而在settings.py中将NoseTestRunner设置为默认值
发布于 2015-12-15 14:46:14
你可以子类化芹菜跑步者和鼻子跑步者,然后你可以得到所有它们的良好侧面。
from django_nose import NoseTestSuiteRunner
from djcelery.contrib.test_runner import CeleryTestSuiteRunner
class TestRunner(CeleryTestSuiteRunner, NoseTestSuiteRunner):
pass然后在您的设置中:
TEST_RUNNER = '<package to>.TestRunner'它的工作原理:
help(TestRunner)你会得到:
| Method resolution order:
| TestRunner
| djcelery.contrib.test_runner.CeleryTestSuiteRunner
| django_nose.runner.NoseTestSuiteRunner
| django_nose.runner.BasicNoseRunner
| django_nose.runner.BaseRunner
| django.test.runner.DiscoverRunner
| builtins.object测试CeleryTestRunner什么也不做,只是设置了一些配置,然后调用super().setup_test_environment()。然后超级进程将在该链中查找setup_test_environment()。
观看来自Raymond Hettinger的视频:超级被认为是超级(here)。
https://stackoverflow.com/questions/15582770
复制相似问题