Python 如何对需要HTTP请求的函数进行单元测试?

Python 如何对需要HTTP请求的函数进行单元测试?,python,unit-testing,flask,Python,Unit Testing,Flask,我的Flask应用程序中有一些基于会话管理的功能。例如,当来自会话的请求传入时,更新字典中的值(datetime.now()值) def更新现有会话(活动会话): “”[使用更新管理字典中会话的值 当前时间戳] Args: 活动会话([dictionary]):[dictionary包含会话信息。 key=会话令牌,value=上次请求时间戳] 返回: 活动会话([dictionary]):[Update dictionary of active sessions。 Key=会话令牌,value

我的Flask应用程序中有一些基于会话管理的功能。例如,当来自会话的请求传入时,更新字典中的值(datetime.now()值)

def更新现有会话(活动会话):
“”[使用更新管理字典中会话的值
当前时间戳]
Args:
活动会话([dictionary]):[dictionary包含会话信息。
key=会话令牌,value=上次请求时间戳]
返回:
活动会话([dictionary]):[Update dictionary of active sessions。
Key=会话令牌,value=上次请求时间戳]
"""
session\u name=session.get('public\u user'))
logging.info(“来自”+str(会话名称)的新请求”)
活动会话[会话名称]=datetime.now()
返回活动会话
当我尝试单元测试这个或类似的方法(也使用会话)时,例如下面的例子,我得到以下错误:

def测试生成新会话(self):
活动会话={}
活动会话=会话管理。生成新会话(活动会话)
self.assertEqual(len(主动会话),1)
运行时错误:在请求上下文之外工作。
这通常意味着您试图使用所需的功能
活动的HTTP请求。请参阅有关测试的文档
有关如何避免此问题的信息。
如何使用活动HTTP请求进行单元测试,以生成会话,从而使代码运行?

您想使用Flask的:

从您的_flask_应用程序导入应用程序#flask应用程序对象
使用app.test_client()作为客户端:
response=client.get(“/your controller endpoint”)
response=client.post('/your controller endpoint',data={'post':'params'})
烧瓶文档通常建议您使用PyTest,这样可以更轻松地设置夹具。文档中的示例:

导入操作系统
导入临时文件
导入pytest
从烧瓶进口烧瓶
@pytest.fixture
def client():
db_fd,flaskr.app.config['DATABASE']=tempfile.mkstemp()
flaskr.app.config['TESTING']=True
使用flaskr.app.test_client()作为客户端:
使用flaskr.app.app_context():
flaskr.init_db()
收益客户
操作系统关闭(db\U fd)
取消链接(flaskr.app.config['DATABASE'])
但简单的回答是,只需在
应用程序
对象上调用
test\u client()