Osk*_*son 11 python django unit-testing celery
在使用Celery任务的Django应用程序中运行测试时,我无法完全测试需要从数据库获取数据的任务,因为它们没有连接到Django创建的测试数据库.
task_always_eager在Celery中进行设置可以True部分解决这个问题,但正如测试文档所说,这并不能完全反映代码如何在真正的Celery工作程序上运行,并且不适合测试.
如何在没有设置的情况下运行Django测试时,如何让Celery任务使用Django测试数据库task_always_eager = True?
Sov*_*kov 13
短=你必须像生产一样经营芹菜工人
简单:
高级:
总是你必须为芹菜提供消息代理.
我有一个测试需要专门的芹菜工作者检查我的代码,它在celery任务和调用代码之间传递消息:https: //gist.github.com/Sovetnikov/a7ad982fc77e8dfbc528bfc20fcf3b1e这个python模块是二合一 - 一个TestUnit和芹菜工人运行具有自包含配置.
我的代码不使用任何数据库,但您可以轻松地根据您的需要进行调整.只需将django.conf.settings.DATABASE(作为json或pickle或任何你喜欢的方法)传递给celery starter代码并配置Django DATABASE以指向测试db.
附加信息:
这个案例有完整的解决方案https://github.com/RentMethod/celerytest(我尝试了它的一些旧版本并没有运气,因为它使用线程,使用python GIL ......我认为它过于复杂)
示例代码,如何在单个模块中配置DATABASE设置和init django本身https://gist.github.com/Sovetnikov/369a8d05ba2b6482fa20769bc498f122
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |