And*_*res 8 python testing django multithreading celery
背景:我正在开发一个项目,该项目使用Celery来安排将来某个时间运行的任务.这些任务推动了最终状态机的状态.这是一个例子:
我正在使用这个SO答案所建议的CELERY_ALWAYS_EAGER
在测试中使用该技术的问题在于,任务代码(在单独的线程中运行)与调度它的运行在同一个线程中.这会导致FSM状态无法正确保存,并且难以测试.我无法确定究竟是什么导致它,但似乎在调用堆栈的底部你保存到当前状态,但是当你返回调用堆栈时,正在保存先前的状态.我可能会花更多的时间来确定代码没有运行时出现的问题,但尝试让代码运行应该如何运行并确保它正在做它应该做的事情似乎更合乎逻辑.
问题:因此,我想知道是否有办法在django可以在测试运行期间使用芹菜设置.如果它可以自动运行,那将是理想的,但即使是一些人工干预也不如手动测试行为.我认为如果我在测试中设置一个中断,运行芹菜工作者连接到测试数据库,继续django测试,可能有可能.以前有人试过这样的事吗?
您想要做的不是单元测试,而是功能/集成测试。
我建议使用一些 BDD 框架(Behave、Lettuce),并从 CI 服务器(TravisCI 或 Jenkins)针对外部服务器(例如临时环境)运行 BDD 测试。
所以,这个过程可能是: