我有一个查询,它根据视图的年龄生成分数。如您所见,我正在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')
生成配置的值,并且可以准确计算预期分数。
SQLite 保证同一查询中的所有时间函数返回相同的时间。但是,这不适用于多个语句。
您可以安装自己的用户定义函数来替换julianday()
(或您正在使用的任何函数)。或者,编写自己的 VFS。