我使用gitlab-ci运行测试套件,在一个测试中,我想模拟一个 更改系统日期(例如,到第二天)以查看是否 一切都会按预期进行,例如:
如何出于单元测试目的模拟系统日期/时间的更改?
编辑:由于我的代码库是Python,因此我发现了freezegun和python-libfatketime;前者可能可以解决我的Python代码问题,而后者则更强大,因为它可以拦截系统调用,因此从理论上讲,如果在应用补丁后启动Redis,我可以将其用于测试Redis TTL。
答案 0 :(得分:0)
您可以覆盖gettimeofday
和clock_gettime
返回所需的任何时间。但是,这不会影响带有超时的pthread等待功能。
答案 1 :(得分:0)
不从系统中选择日期并从可以通过脚本更改的变量中提供日期如何?
答案 2 :(得分:0)
在编写(单元)测试套件时,您需要明确定义被测系统及其边界。在这种情况下,您的应用程序属于被测系统,redis则不属于该系统。
不属于被测系统的事物应该被嘲笑。对于python,请从此处开始:https://docs.python.org/3/library/unittest.mock.html