【问题标题】:django celery unit tests with pycharm 'No module named celery'django celery 单元测试与 pycharm '没有名为 celery 的模块'
【发布时间】:2016-09-20 07:42:25
【问题描述】:

当我的目标是单个函数时,我的测试工作正常(请参阅图像中的“目标”字段):

questionator.test_mturk_views.TestReport.submit

但是,当我指定目标以在我的提问者应用程序中包含所有测试时:

questionator

我收到此错误:

Error ImportError:导入测试模块失败: src.questionator.test_mturk_views Traceback(最近一次通话最后):
_find_tests 中的文件“C:\Python27\Lib\unittest\loader.py”,第 254 行 模块 = self._get_module_from_name(name) 文件“C:\Python27\Lib\unittest\loader.py”,第 232 行,在 _get_module_from_name 导入(名称)文件“C:\Users\Andy\questionator_app\src__init__.py”,第 5 行,在 from .celery import app as celery_app # noqa ImportError: No module named celery

请注意,我的测试包括我通过“环境变量”进行的设置(在图片中也可以看到):

DJANGO_SETTINGS_MODULE=questionator_app.settings.development;PYTHONUNBUFFERED=1

celery documentation 提到了“使用自定义测试运行程序来测试 celery”,但这在现已失效的 djcelery 包中。我虽然复制/粘贴/调整this mentioned test runner 并按照描述使用它,但我得到了同样的错误。

不幸的是,使用 CELERY_ALWAYS_EAGER 也不起作用http://docs.celeryproject.org/en/latest/configuration.html#celery-always-eager

我希望得到一些指导。最好的祝福, 安迪。

【问题讨论】:

  • 根据测试运行的顺序和设置的顺序,测试可能会在可用之前尝试加载 celery 模块。通常测试是按字母顺序运行的,所以要确保在.test_mturk_views. 之前运行的任何东西都能够加载 Celery 的东西。

标签: django unit-testing celery pycharm


【解决方案1】:

同样的问题(很可能是我),

我已关注官方tutorial 让 celery 在我的项目中工作。他们建议如下:

让最后一次导入显式解决了我的问题:

from taskapp.celery import app as celery_app  # noqa

我会看看能否推动 Celery 的创作者更新他们的教程 (pull request)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-04
    • 2013-02-16
    • 1970-01-01
    • 2020-01-28
    • 2019-01-23
    • 1970-01-01
    • 2018-08-22
    • 2015-07-07
    相关资源
    最近更新 更多