繁体   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