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