linux - 如何模拟系统日期/时间的更改以进行测试?
问题描述
我使用 gitlab-ci 运行我的测试套件,在一个测试中,我想模拟系统日期的更改(例如,转到后一天),以查看一切是否按预期工作,例如:
- redis 键被删除(TTL)
- 自更改日期以来,某些文件使用新的“运行编号”写入
- 日期和时间计算没问题
- ...
如何为单元测试目的模拟系统日期/时间的更改?
编辑:由于我的代码库是 Python,我发现freezegun和python-libfatketime;前者可能可以为我的 Python 代码解决问题,而后者更强大,因为它可以拦截系统调用,所以理论上如果我在应用补丁后启动 redis,我可以使用它来测试 redis TTL。
解决方案
您可以随时覆盖gettimeofday
并clock_gettime
返回。但是,这不会影响具有超时的 pthread 等待函数。
推荐阅读
- node.js - next.js 应用程序中 node-postgres 的 db-migrate 未在 heroku 上找到环境变量
- php - 用新条目更新数据库记录并删除丢失的记录而不删除当前保存的条目的 PHP 算法
- c# - ASP.NET Core 使用之前上传的文件预填充 IFormFile
- linux - 来自远程 mongo 服务器的 Mongodump
- python-3.x - 如何将数据类型与python中的变量进行比较?
- java - 在 Java 中排除特定文件名的正则表达式
- c - 如何禁用进程的权限?
- flutter - Flutter/Dart - 为什么我的 Future 返回 Null?
- excel - 在 Excel VBA 中使用 WorksheetFunction.Trim 正在删除单元格中的颜色
- sql - 按转置的 SQL 组