《flask web开发》书中在第七章的test遇到的问题

AssertionError: Popped wrong app context. (<flask.ctx.AppContext object at 0x7f957009ab10> instead of <flask.ctx.AppContext object at 0x7f95711aa2d0>)

错误代码如上

跑python manage.py shell
python manage.py runserver
没问题,非常不解是哪里除了问题

阅读 6.8k
3 个回答

这个问题看来已经很久了,不知道现在回答算不算晚。

童鞋们可以按照两个步骤来解决:

  1. 在config里加上PRESERVE_CONTEXT_ON_EXCEPTION = False如果解决了,恭喜你,不用看下一步了
  2. 如果你使用的是mysql,很可能是flask没有生成对应的数据库,这会使得单元测试在setUp初就出错,自然在tearDown时无法找到对应的app_context,解决方法:手动生成测试数据库,之后再执行测试。
新手上路,请多包涵

目前我也遇到同样问题

检查下是否把 tearDown 写成了 teardown

unittest 包中的tearDown() 方法在测试后运行。

 def tearDown(self):
    db.session.remove()
    db.drop_all()
    self.app_context.pop()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题