python - 用 Flask @auth.login_required 装饰器装饰的端点的单元测试
问题描述
我使用 Flask-HTTPAuth 进行身份验证,使用 Flask-login 进行登录,并希望为端点添加单元测试@auth.login_required(scheme="Bearer")
:
端点.py
class UserData(Resource):
@auth.login_required
def get(self, user_id):
user = db_models.User.query.get(user_id)
return result
认证.py
@auth.verify_token
def verify_token(token):
data = token_serializer.loads(token)
return data.get("username", False)
但是被嘲笑困住了(它不起作用):
测试.py
@mock.patch("myapp.auth")
@mock.patch("myapp.db_models.User")
def test_get_user(self, mock_user, mock_login):
with app.test_client() as client:
mock_login.verify_token.return_value = TEST_USER["username"]
mock_login.login_required.return_value = True
mock_user.query.get.return_value = TEST_USER
response = client.get("/user/100000")
self.assertIsNotNone(response)
self.assertIsInstance(response.get_json(), dict)
第二种方法:
测试.py
@mock.patch("myapp.auth.login_required", return_value = True)
@mock.patch("myapp.db_models.User")
def test_get_user(self, mock_user, mock_login):
with app.test_client() as client:
mock_user.query.get.return_value = TEST_USER
response = client.get("/user/100000")
self.assertIsNotNone(response)
self.assertIsInstance(response.get_json(), dict)
你能帮我弄清楚如何以正确的方式做到这一点吗?
谢谢您的帮助!
解决方案
推荐阅读
- javascript - 拥有一个包含大 DIV 并使用 JS 将其注入 html 的字符串是常见的做法吗
- amazon-web-services - 尝试将音频文件上传到 aws s3 存储桶时访问被拒绝
- ffmpeg - FFmpeg、librtmp和rtmpdump之间有什么关系?
- javascript - 单击页面中的href后向上滚动
- webpack - webpack 的脚本加载器替代方案?
- wear-os - 收集所有心率和其他数据的健身手表
- c++ - 加快高度模板化 C++ 软件开发的技巧是什么?
- javascript - 显示动态创建的可折叠内容
- flutter - 返回新屏幕后如何关闭搜索栏?扑
- c++ - 如何在cmake中的项目之间添加_dependencies