2

夏時間の切り替え後、今日失敗し始めた単体テストがいくつかあります。

iCalendar pythonモジュールを使用して、icsファイルをロードおよび保存しています。

次のスクリプトは、テストの簡略化されたバージョンです。今朝の時点で、スクリプトは「夏」では正常に機能し、「冬」では失敗します。手動で時計を戻すことで故障を再現できます。スクリプトの出力は次のとおりです。

[root@ana icalendar]# date 10250855
Sat Oct 25 08:55:00 CEST 2008
[root@ana 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
[root@ana icalendar]# date 10260855
Sun Oct 26 08:55:00 CET 2008
[root@ana 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>)

そして、これがスクリプト全体です。

それで、質問:-なぜ私の現在の時刻(および私がいるDSTのどの部分)がタイムスタンプのロード/保存/解析に影響を与えるのでしょうか?私はそうしないと思います。-バグの場合、この種のバグをどのように単体テストしますか?明らかに、単体テストでコンピューターの時計をリセットしたくありません。

4

1 に答える 1

1

あなたのコードを見ずに(そして引用されたtest-run-scriptは私の脳が今理解できていない)、あなたが今いる時間帯とは異なる時間帯にある時間を取得しようとしていることに気づきました。(DSTは、現在のタイムゾーンから+ -1時間ではなく、別のタイムゾーンと考えてください)。これは(あなたがそれをどのように行うかに応じて)時間の増減につながる可能性があります。(飛行時のように、一度に開始し、開始する前にすべて現地時間で現在地に到着します)

于 2008-10-26T09:31:08.427 に答える