簡體   English   中英

帶有時間戳的函數的Python單元測試

[英]Python unit test for a function that has timestamp

在對輸出時間戳並在其上說出主機名以及其他值的功能的單元測試中。 在單元測試中,如果我在預期輸出中添加一些時間戳和主機名,它將失敗,因為每次調用該函數時函數的時間戳都會更改,並且每次在不同的機器上運行時主機名都會更改。 解決方法是什么? 非常感謝您的投入。

函數的輸出:

{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
# and it can change every time we run it

但是此日期時間和主機名會根據時間,當然和機器而變化

我認為我將在單元測試中使用assertEqual或assertDictEqual的預期輸出:

{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}

其他斷言檢查是否更適合這種情況?

無論發生在何處,都應該模擬datetime.now()調用,以便創建datetime始終是一些固定值,您可以在測試期間對其進行斷言。

這是一個常見的要求,因此已經有一些庫支持-我可以推薦Frozengun

@freeze_time("09-10-2018 23:23:23")
def test_something():
    data = something()
    assert data == {'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM