如何在单元测试中设置Flask-Principal身份?
我正在测试一个Flask应用,这个应用使用了Flask-Principal来管理角色权限和细粒度的资源保护。我不太确定在处理POST请求时,应该如何设置身份信息。我参考了另一个Flask-Principal的帖子中提到的测试方法。在处理GET请求时,我使用了查询字符串的方法,而在POST请求中,我把查询字符串改成了请求头。GET请求可以正常通过,但所有的POST请求都因为权限被拒绝而失败。
def test_admin(self):
r = self.client.get('/admin')
self.assertEqual(r.status_code, 403)
#
r = self.client.get('/admin', query_string={'idname': "member"})
self.assertEqual(r.status_code, 403)
#
r = self.client.get('/admin', query_string={'idname': "admin"})
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data, "OK")
如果有人能提供帮助或见解,我会非常感激。我觉得我的问题部分是因为我不太明白身份信息是如何以及在哪里被设置的。
1 个回答
0
结果发现,在进行涉及POST请求的测试时,Flask-Principal的身份是通过查询字符串正确设置的。问题在于请求中的follow_redirects
被设置为True,这导致在重定向时身份没有被加载。我去掉了重定向,并通过检查数据库确认POST请求是正常工作的。