Fx自動売買システムを作っているとき、Modelsに格納されたデータのテストを行いました。
この時、DateTime型を格納するとき勝手にタイムゾーンがついてしまい、テストエラーになっていまいます。
#テストデータ登録
db.InputTable(
no = 1
,interval = 5
,date = datetime(2020, 3, 26, 10, 11, 25)
,open = 100.03
,high = 101.03
,low = 99.03
,close = 99.98
).save()
#期待値
expect1 = pd.DataFrame([
1
,5
,datetime(2020, 3, 26, 10, 11, 25)
,100.03
,101.03
,99.03
,99.98
])
#テスト実行
result1 = testee.get_table()
#結果
assert_frame_equal(result1,expect1)
エラーコマンド
Attribute "dtype" are different [left]: datetime64[ns, UTC] [right]: datetime64[ns]
DB登録時に勝手にUTCが付きます
これsettings.pyの初期値が
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True
このようになっているからです。
特にタイムゾーンが要らない場合は
USE_TZ = False
に修正しましょう。

コメント