testing - 测试 django celery,与数据库交互?
问题描述
通常,当使用纯 Django 时,我得到了一个清晰的测试数据库,当我在测试函数中创建一个对象时,我在项目 dode 中也得到了相同的对象。但是,当我使用 celery 时,项目中的数据库与生产中的数据库相同,而不是获取测试数据库。
1.
当我进入管理页面并创建一个新的时PeriodicTask
,我在运行测试而不是清除数据库进行测试时也得到了该任务。- 注意:所有型号都会发生这种情况,不仅
PeriodicTask
在我测试芹菜时
@app.task
def create_alert(beat_id, perams):
return PeriodicTask.objects.count()
def test_celery_beats_data_base(self):
schedule, created = IntervalSchedule.objects.get_or_create(
every=10,
period=IntervalSchedule.SECONDS)
PeriodicTask.objects.create(
interval=schedule,
name='Importing contacts',
task='proj.tasks.import_contacts',
one_off=True
# args=[]
# kwargs={}
)
beat_id = PeriodicTask.objects.first().id
result = create_alert.delay(beat_id, 'perams')
ic(result.get()) #1. this return 0 # the probleme is this should return 1 as wel
ic(PeriodicTask.objects.count()) #2. this return 1
解决方案
推荐阅读
- java - Java 数组与数组列表
- c++ - 为什么我们不把所有的动态内存都保存在数组中呢?
- python - 将 finditer() 输出放入数组
- c# - 如何修复 dotnet Core 中 MySQL 连接器的“无法解析类型”错误
- python - Bokeh 给了我一个带有 ColumnDataSource 的空图
- html - 无法加载css文件
- python - 如果我缓存一个 Spark Dataframe 然后覆盖引用,原始数据帧还会被缓存吗?
- c# - 无法从移动应用程序连接到 api 端点
- debugging - Dialogflow Flutter Chatbot - NoSuchMethodError:在 null 上调用了方法“[]”
- c# - Linq查询更新符合我条件的组中的所有项目