gpt4 book ai didi

python - 如何在不清除数据库的情况下测试 Django on_commit Hook ?

转载 作者:太空狗 更新时间:2023-10-29 20:23:47 28 4
gpt4 key购买 nike

on_commit函数已添加到 Django 1.9,以便能够在当前事务提交后触发操作(例如 Celery 任务)。

他们稍后提到in the docs应该使用 TransactionTestCase 来测试依赖于该函数的特性。但是,与 TestCase(使用事务并将其回滚)不同,TransactionTestCase 在每次测试后清空整个数据库。

不幸的是,我的数据迁移会在数据库中预加载一些有用的数据,这意味着在第一个测试清除数据库后,后续测试将不再有效。

我最终通过模拟 on_commit 诉诸于一个卑鄙的把戏:

with mock.patch.object(django.db.transaction, 'on_commit', lambda t: t()):
test_something()

有没有更好的办法?

最佳答案

只需继续使用 TestCase 和假提交强制执行 run_and_clear_commit_hooks 中推迟的操作。查看这篇文章:

https://medium.com/gitux/speed-up-django-transaction-hooks-tests-6de4a558ef96

关于python - 如何在不清除数据库的情况下测试 Django on_commit Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com