我在尝试确定如何测试我的应用程序体系结构时遇到了一些麻烦.我已经完成了60%的网站,具有完整的单元测试范围(涵盖所有实用程序/ lib函数,作为简单函数的celery任务,等等).
当我尝试测试执行芹菜任务(延迟方法)的Django视图(普通函数)时,就会出现问题.
例:
def myview(request):
...
mytask.delay(myval)
...
在不真正生成新任务执行的情况下测试场景的正确方法应该是什么?
一种明显的方法是在每次任务延迟调用之前设置一个条件,仅当它不在测试环境中时才执行它,但它看起来确实很脏.
有小费吗?
解决方法:
使用CELERY_ALWAYS_EAGER
设置进行测试运行.
它使函数立即被调用,而不是作为任务运行.
django设置示例片段:
if 'test' in sys.argv:
CELERY_ALWAYS_EAGER = True