[英]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.