首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于在Django中测试配置的Celery

用于在Django中测试配置的Celery
EN

Stack Overflow用户
提问于 2020-01-08 16:40:00
回答 2查看 160关注 0票数 0

我有一个celery_test.py文件,它应该加载Django中的测试配置设置(config.test),但它加载的是开发配置(config.development)

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2020-01-08 16:48:35

鉴于您使用的是django,我建议不要像这样实际覆盖设置文件。相反,使用django.test.override_settings装饰器来覆盖您想要更改的特定设置。这样,您将始终测试最新的设置文件,因此您不必同时保持这两个文件为最新。

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

我真的不能提供一个示例,因为您没有提供任何单元测试示例。但我希望链接的文档足够清楚。

票数 0
EN

Stack Overflow用户

发布于 2020-01-08 18:45:05

假设您使用的是pytest,您可以将以下内容放入pytest.ini文件中:

代码语言:javascript
运行
复制
[pytest]
DJANGO_SETTINGS_MODULE = celery_test.py

或使用:

代码语言:javascript
运行
复制
DJANGO_SETTINGS_MODULE=celery_test.py pytest

就是一句小笑话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59642151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档