Django-Q 设置 Q_CLUSTER 'sync': True 不适用于单元测试
Posted
技术标签:
【中文标题】Django-Q 设置 Q_CLUSTER \'sync\': True 不适用于单元测试【英文标题】:Django-Q set Q_CLUSTER 'sync': True doesn't work for unit testsDjango-Q 设置 Q_CLUSTER 'sync': True 不适用于单元测试 【发布时间】:2020-01-01 10:56:16 【问题描述】:我正在使用 Django-Q 通过 Django 2.2、DRF 3.9 和 Postgres 10.9 发送异步电子邮件
除了单元测试外,设置工作正常。 我指的是以下问题,这与我面临的完全相同: https://github.com/Koed00/django-q/issues/266
根据链接,解决方案之一是将同步设置更改为“真”以进行测试。
这就是我在 tests.py 中的内容:
from django.conf import settings
settings.Q_CLUSTER['sync'] = True
class UserAPITestCase(APITransactionTestCase):
print(settings.Q_CLUSTER)
'print' 显示 'sync':True 已添加,但 async_task 仍以异步模式运行。
但是,如果我直接在设置文件中添加同步设置,一切都会正常运行,并且 async_task 会同步运行。
如果稍后更新,就好像 django-q 没有接受设置。我该如何解决?
【问题讨论】:
你如何解决这个问题。目前我有同样的问题。 【参考方案1】:尝试做
from django.test import override_settings
from django.conf import settings
@override_settings(Q_CLUSTER=**settings.Q_CLUSTER, 'sync': True)
class UserAPITestCase(APITransactionTestCase):
pass
【讨论】:
不幸的是,我得到了相同的结果。同步未更新为 True 似乎 override_settings 和 DRF 可能存在问题 如果此解决方案不起作用,我建议您遵循最佳实践来处理不同环境中的设置,例如登台、测试、开发和生产。它是创建一个基本设置文件并从中继承其他环境的文件。这是关于它的helpful article。 谢谢。我也有同样的想法。目前,我将其作为一种解决方法。以上是关于Django-Q 设置 Q_CLUSTER 'sync': True 不适用于单元测试的主要内容,如果未能解决你的问题,请参考以下文章