我有一个查询,根据视图的年龄生成分数。如您所见,我正在SQL中进行年龄计算。查询看起来像。
SELECT
SUM(1.0 / (julianday('now') - julianday(view.date))) as score
FROM
view;
在我的单元测试中,我想做类似
的事情self.assertEqual(actual_score, expected_score)
通常,如果我在python中进行年龄计算,我可以用django.test.utils.freeze_time
之类的东西来冻结时间。但是,因为日期差异是在SQL中完成的,这是不可能的。
如何在单元测试中冻结时间,以便julianday('now')
生成配置值,我可以准确计算预期分数。
答案 0 :(得分:0)
SQLite保证同一查询中的所有时间函数返回相同的时间。但是,这不适用于多个语句。
您可以安装自己的用户定义函数来替换julianday()
(或您正在使用的任何函数)。或者,编写自己的VFS。