说我有2个芹菜任务:
@app.task(name='process_one_line')
def process_one_line(line):
do_alot(line)
@app.task(name='process_one_file')
def process_one_file(file_id):
for line in get_file_by_id(file_id):
process_one_line.delay(line)
并说我有一个看起来像这样的TestCase:
def test_processing_a_file(self):
process_one_file(self.file_id)
这样运行正常,但委托的process_one_line方法实际上被推送到测试用例之外的其他celery实例。简而言之,我在端口6379上运行的redis服务器接收任务,然后将它们推送到" main"工作人员。因此,do_alot所做的任何更改都会反映在实际数据库中,而不是运行django测试时创建的测试数据库。
我可以通过让它自己测试process_one_line来测试一些东西,但如果我可以完全测试整个事情那就太好了。
答案 0 :(得分:1)
您可以将CELERY_ALWAYS_EAGER=True
添加到测试设置中,以防止将所有任务发送到redis。