依赖于时间戳的Flask应用程序的单元测试模式?

2024-04-19 05:52:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个烧瓶应用程序,它是任务调度系统的一部分。许多路由中的业务逻辑依赖于当前时间。你知道吗

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

我需要测试一下这些功能。这些测试需要伪造时间戳,这样我就可以根据各种命令到达的时间来验证应用程序是否正确响应。你知道吗

在烧瓶里写这类测试有标准模式吗?我能想出一堆笨重的,不干的方法。想知道有没有更优雅的图案/工具。。。?你知道吗


Tags: app应用程序路由datetime烧瓶系统def时间
2条回答

您可以用模拟实现替换datetime.now()。例如,在python3中有^{}实现了这种方法。你知道吗

这很管用,但我很想找到更干净的:

@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参数。如果我们在调试模式下运行,那么它可以覆盖正常逻辑来获取当前时间。你知道吗

相关问题 更多 >