【问题标题】:How to run django unit test in jenkins, that depend on celery如何在 jenkins 中运行 django 单元测试,这取决于 celery
【发布时间】:2015-08-06 09:25:09
【问题描述】:

我的 django 项目有一个单元测试。

我的 django 项目中的一些视图运行 celery 任务,我想在这些任务之后检查数据库。 我对芹菜任务进行了单独的测试,我在没有.delay() 方法的情况下调用它们。

主要问题是,在詹金斯工作期间,拥有芹菜工人的最佳和最干净的方法是什么?

目前我只是在测试前运行nohup celery -A myqpp worker &,并在工作结束时杀死所有正在运行的芹菜。

【问题讨论】:

    标签: python django unit-testing jenkins celery


    【解决方案1】:

    只是为了扩展关于始终渴望模式的答案,您可以查看我对其他问题的回答,如何从测试集运行 celery worker https://stackoverflow.com/a/42107423/590233

    但是那里需要做一些事情:

    1. 将 celery worker 连接到测试数据库

    2. 以某种方式运行消息代理实例...(我认为您在测试之前已经运行它,但最干净的方法是从 setUp 生成代理实例作为 celery 工作者)

    【讨论】:

      【解决方案2】:

      最好和最干净的方法是在 Jenkins 工作期间没有任何 celery 工人,也没有任何队列/结果后端。利用CELERY_ALWAYS_EAGER 设置在本地执行单元测试中的任务,方法是阻塞直到任务返回。

      在 Celery 文档中查看更多信息:CELERY_ALWAYS_EAGER docs

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2016-02-09
        • 2020-01-28
        • 2014-08-04
        • 2013-02-19
        • 2021-10-11
        • 1970-01-01
        • 2018-09-10
        • 2014-03-28
        相关资源
        最近更新 更多