我确实在Flask和单元测试集成(或者可能是记录器配置)中遗漏了一些东西
但是当我试图对一些有app.logger的类方法进行单元测试时,我遇到了RuntimeError: working outside of the application context
的问题
这是一个实际的例子:
utils.py
import boto3
from flask import current_app as app
class CustomError(BaseException):
type = "boto"
class BotoManager:
def upload_to_s3(self, file):
try:
# do something that can trigger a boto3 error
except boto3.exceptions.Boto3Error as e:
app.logger.error(e)
raise CustomError()
test_utils.py
import pytest
from utils.py import CustomError, BotoManager
def test_s3_manager_trigger_error():
boto_manager = BotoManager()
with pytest.raises(CustomError):
boto_manager.upload_to_s3('file.txt') # file doesn't exist so trigger error
所以事情就是当我运行它时显示错误:
RuntimeError: Working outside of application context.
因为没有创建应用程序,我没有使用该应用程序,所以有道理。
所以我只看到两种可能的解决方案(剧透我不喜欢其中任何一种):
有人已经面临这个问题吗?你是怎么解决的?还有其他可能的解决方案吗?