linux - 如何模拟系统日期/时间的变化以进行测试?

标签 linux unit-testing testing automated-tests

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

  • redis 键被删除(TTL)
  • 有些文件自更改日期起使用新的“运行编号”写入
  • 日期和时间计算正常
  • ...

我如何模拟系统日期/时间的变化以进行单元测试?


编辑:由于我的代码库是用 Python 编写的,所以我找到了 freezegunpython-libfatketime ;前者可能对我的 Python 代码有用,后者更强大,因为它拦截系统调用,所以理论上我可以用它来测试 redis TTL,如果我在应用补丁后启动 redis。

最佳答案

您可以覆盖 gettimeofdayclock_gettime 以在您想要的任何时间返回。但是,这不会影响具有超时的 pthread 等待函数。

关于linux - 如何模拟系统日期/时间的变化以进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949547/

相关文章:

java - tomcat8 和 eclipse 火星噩梦

linux - 成为设备驱动程序程序员需要具备哪些硬件知识?

linux - Bash:检查命令的输出

linux - 为什么 sort f >f 会删除所有内容?

python - 无法从测试函数的函数调用模拟函数调用

unit-testing - 比较单元测试中的文本

Android Espresso : cannot resolve symbol AndroidJUnit4. 类

javascript - 如何在 `` javascript 中引用变量

testing - Jenkins 多配置项目处理并发设备使用

python - 在 pytest.mark.parametrize 中使用 fixture