[英]Mock timestamp Unit Test Python
我有那個代碼:
from datetime import datetime, timedelta
def func():
date = datetime.today() - timedelta(days=1)
timestamp = (str(date.timestamp()).split(".")[0]) + "000"
return DataAccess().get(
sort_key="CampaignRecipientsReport#" + timestamp,
)
現在我需要模擬一個變量時間戳以在我的單元測試中使用它
mock_data_access.return_value.get.assert_called_once_with(
sort_key="CampaignRecipientsReport#" + timestamp,
)
不,您不需要模擬函數的局部變量timestamp
。 相反,您需要重新設計您的 function。 你的問題是,你的 function 是狀態相關的,因此有副作用。
即你應該能夠傳遞時間戳。 如果您經常需要當前日期時間,則可以將其默認為該值,前提是未指定任何值。 這使得 function 更加靈活,狀態依賴性和可測試性更低。
from datetime import datetime, timedelta
from typing import Optional
def func(timestamp: Optional[datetime] = None):
if timestamp is None:
timestamp = datetime.today() - timedelta(days=1)
timestamp = (str(timestamp.timestamp()).split(".")[0]) + "000"
return DataAccess().get(
sort_key="CampaignRecipientsReport#" + timestamp
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.