簡體   English   中英

用於對依賴時間戳的Flask應用進行單元測試的模式?

[英]Patterns for unit testing a Flask app that depends on timestamps?

我有一個Flask應用,它是任務計划系統的一部分。 許多路線中的業務邏輯都依賴於當前時間。

@app.route("/do_stuff")
def do_stuff():
  now = datetime.datetime.now()
  call_func(request.args.get("some_arg"), now)

我需要測試這些功能。 測試將需要欺騙時間戳,以便我可以根據各種命令何時到達來驗證應用程序是否正確響應。

是否有用於在Flask中編寫此類測試的標准模式? 我可以想到很多笨拙的,非干燥的方法。 想知道是否還有其他優雅的圖案/工具...?

您可以用模擬實現替換datetime.now() 例如,在Python 3中,有一個unittest.mock實現了這種方法。

這可行,但是我很想找到更清潔的東西:

@app.route("/do_stuff")
def do_stuff():
  if app.debug and request.args.get("now"):
    now = request.args.get("now")
  else:
    now = datetime.datetime.now()      
  call_func(request.args.get("some_arg"), now)

有了now邏輯,我可以傳遞一個可選的now參數。 如果我們在調試模式下運行,則它可以覆蓋常規邏輯以獲取當前時間。

暫無
暫無

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

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