1
我有一些單元測試在夏令時切換後開始失敗。夏令時更改影響保存和加載icalendar文件的結果?
我們使用iCalendar python module來加載和保存ics文件。
以下腳本是我們測試的簡化版本。從今天上午開始,劇本在'夏天'中運行良好,'冬天'失敗。通過手動設置時鐘可以複製故障。這裏是腳本的輸出:
[[email protected] icalendar]# date 10250855
Sat Oct 25 08:55:00 CEST 2008
[[email protected] icalendar]# python dst.py
DTSTART should represent datetime.datetime(2015, 4, 4, 8, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Brussels')) Brussels time
DTSTART should represent datetime.datetime(2015, 4, 4, 6, 0, tzinfo=<icalendar.prop.UTC object at 0x956b5cc>) UTC
DTSTART represents datetime.datetime(2015, 4, 4, 6, 0, tzinfo=<icalendar.prop.UTC object at 0x956b5cc>) Brussels time
[[email protected] icalendar]# date 10260855
Sun Oct 26 08:55:00 CET 2008
[[email protected] icalendar]# python dst.py
DTSTART should represent datetime.datetime(2015, 4, 4, 8, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Brussels')) Brussels time
DTSTART should represent datetime.datetime(2015, 4, 4, 6, 0, tzinfo=<icalendar.prop.UTC object at 0x96615cc>) UTC
DTSTART represents datetime.datetime(2015, 4, 4, 7, 0, tzinfo=<icalendar.prop.UTC object at 0x96615cc>) Brussels time
Traceback (most recent call last):
File "dst.py", line 58, in <module>
start.dt, startUTCExpected)
AssertionError: calendar's datetime.datetime(2015, 4, 4, 7, 0, tzinfo=<icalendar.prop.UTC object at 0x96615cc>) != expected datetime.datetime(2015, 4, 4, 6, 0, tzinfo=<icalendar.prop.UTC object at 0x96615cc>)
而這裏是whole script。
因此,問題: - 爲什麼我當前的時間(以及我所在的DST的哪一部分)影響加載/保存/時間戳分析?我希望它不會。 - 你會如何測試這種錯誤,如果它是一個錯誤?顯然,我不希望我的單元測試重置計算機上的時鐘。
我已經看到近8年這種單元測試和時區/ TZ + DST的麻煩。我真的很好奇這個問題會得到更通用的答案(如何準備通過DST更改進行穩定的單元測試) – Jonke 2008-10-26 09:13:57