Celery异步任务测试:从状态轮询到幂等校验
2025年8月记录,分类「接口测试」。这是一篇偏实战的记录,保留了当时的判断过程和后续沉淀。
异步难点
异步任务不能只看接口返回已提交。真正要验证的是任务入队、执行、失败重试、状态回写和重复提交。
记录这篇的目的,是让下次遇到同类问题时少走一轮弯路。
测试路径
- 提交任务后轮询任务状态或查询任务表。
- 模拟失败重试,确认不会重复扣减或重复发送。
- 检查任务日志、消息队列和业务最终状态。
result = app.send_task('tasks.sync_order', args=[order_id])
assert wait_until(lambda: query_task(result.id).status == 'SUCCESS')
幂等检查
- 任务成功和失败都有可见状态。
- 重复提交不会产生重复副作用。
- 超时、重试、取消都有测试路径。
这类内容最怕只靠口头传递,所以我会把命令、样本和异常分支一起留下。
报告
异步测试要追最终一致性,不要停在提交接口的响应上。这个记录后续还可以继续补真实缺陷样本,让它从笔记变成团队检查清单。