0

嘿,我正在帮助为我们的 Python Web 应用程序设置回归测试套件。我们的许多测试都是安排样式测试,其中当前日期很重要。例如:创建从 2 月 1 日开始的一个月内每周运行的重复事件。

为了测试这一点,我真正想做的是覆盖当前日期,以便我可以及时前后移动以检查应用程序的状态。例如,我可以添加一个仅测试页面,让我设置“当前”日期,该日期被传递到 python 后端并用于日期计算。

过去,当我这样做时,我从第一天开始就将它设计到应用程序架构中。不幸的是,我来晚了这个项目并且没有应用程序支持。

所以这是我的问题,有什么方法可以覆盖网络服务调用的当前日期?例如,我可以拦截当前日期的呼叫(可能是猴子补丁吗?)。我宁愿不必做整个 IOC 的事情,因为这意味着要改变数百种方法。- 戴夫

4

2 回答 2

1

你可以这样做:

from datetime import datetime
orig_datetime_now = datetime.now

datetime.now = lambda: datetime(2010, 2, 1)

# tests here

datetime.now = orig_datetime_now

不过,在你的类上放置一个辅助方法来获取当前日期可能是一个更好的主意(因为不要搞砸第三方库等),并像上面显示的那样做同样的猴子补丁。

于 2010-10-28T20:55:24.473 回答
0

回答我自己的问题:

我们目前的计划是在虚拟机上进行测试并更改虚拟机上的日期/时间。这是一个更完整的解决方案,因为它同时获取了数据库和工作线程。

当我们开始实际操作时,我会发布一些真实世界经验的更新。

于 2010-11-08T04:12:26.187 回答