【发布时间】:2014-12-16 07:15:22
【问题描述】:
我为一个程序构建了一个测试套件,该程序使用now() 针对 sqlite 数据库运行大量 SQL 语句。我想模拟 sqlite 时钟 --- 测试设计为在一秒钟内花费几天的行为。我不想碰系统时钟。
这可以用 sqlite 实现吗?
【问题讨论】:
标签: unit-testing sqlite
我为一个程序构建了一个测试套件,该程序使用now() 针对 sqlite 数据库运行大量 SQL 语句。我想模拟 sqlite 时钟 --- 测试设计为在一秒钟内花费几天的行为。我不想碰系统时钟。
这可以用 sqlite 实现吗?
【问题讨论】:
标签: unit-testing sqlite
Python 示例:
import sqlite3
def mock(*_):
return '1984-01-02 11:22:33'
connection = sqlite3.connect(':memory:')
print(connection.execute('SELECT DATETIME()').fetchone()[0])
connection.create_function('DATETIME', -1, mock)
print(connection.execute('SELECT DATETIME()').fetchone()[0])
输出
2022-03-01 11:23:05
1984-01-02 11:22:33
【讨论】:
SQLite 的内置函数可以用sqlite3_create_function 重新定义。
[由 Yaakov Belch 编辑 --- 附加信息:]
【讨论】: