如何模拟系统日期/时间的更改以进行测试



我使用gitlab-ci运行我的测试套件,在一个测试中,我想模拟一个更改系统日期(例如,去第二天),以查看是否是否一切都按预期工作,例如:

  • redis键已删除(TTL)
  • 一些文件以新的"运行号码"编写,因为该日期已更改
  • 日期和时间计算还可以
  • ...

如何模拟单位测试目的的系统日期/时间更改?


编辑:由于我的代码库在Python,因此我找到了Freezegun和Python-libfatketime;前者可能可以为我的python代码做一个技巧,而后者则更强大,因为它正在拦截系统调用,因此从理论上讲,如果我在应用补丁后启动redis,我可以将其用于测试redis ttl。

您可以随时返回gettimeofdayclock_gettime。但是,这不会影响pthread等待功能。

如何不从系统中选择日期并提供可以通过脚本更改的变量的日期?

编写(单元)测试套件时,您需要清楚地定义正在测试的系统及其边界。在这种情况下,您的应用程序属于正在测试的系统中,Redis不属于。

不属于正在测试的系统的事物应被模拟。对于Python开始:https://docs.python.org/3/library/unittest.mock.html

最新更新