用于在 Django 中测试配置的芹菜



我有一个文件celery_test.py它应该加载 Django 中 testing(config.test( 的配置设置,但它加载了 Development(config.development( 的配置

from __future__ import absolute_import
import os
from django.conf import settings
from celery import Celery
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE", "config.testing"
)

test_app = Celery('test')
test_app.config_from_object('django.conf:settings')
test_app.autodiscover_tasks()
print("Testing celery")
print(settings)
@test_app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))

当我打印设置时,它会打印config.development而不是config.testing。谁能在这里帮我如何加载config.testing

看到你使用 django,我建议不要像这样实际覆盖设置文件。而是使用django.test.override_settings修饰器来覆盖要更改的特定设置。这样,您始终可以测试最新的设置文件,因此您不必同时保持两个文件都是最新的。

更多信息也在文档中:https://docs.djangoproject.com/en/3.0/topics/testing/tools/#django.test.override_settings。

我真的无法提供示例,因为您没有提供任何单元测试示例。但我希望链接的文档足够清晰。

假设你正在使用pytest,你可以把它放在你的pytest.ini文件中:

[pytest]
DJANGO_SETTINGS_MODULE = celery_test.py

或使用:

DJANGO_SETTINGS_MODULE=celery_test.py pytest

对于单行。

相关内容

  • 没有找到相关文章

最新更新