【问题标题】:How to properly test an app with REST API + Flask JWT extended?如何正确测试扩展了 REST API + Flask JWT 的应用程序?
【发布时间】:2019-09-14 00:50:40
【问题描述】:

假设我有一个 API 端点,只有拥有有效访问令牌的授权用户才能访问其资源,类似于:

from flask_restful import Resource
from flask_jwt_extended import jwt_required

class Collection(Resource):

    @jwt_required
    def get(self):
        """
        GET response implementation here.
        """
        # Queries and logic here
        data = 10
        if(is_everythig_ok()):
            return {"data": data}, 200
        else:
            return {"message":"Failed to get data."}, 400

并假设有一个 LoginUser 端点返回一个有效的 access_token,我如何编写一些单元测试来重现两个状态代码(200 表示成功,400 表示失败),而用户有一个有效的访问令牌,也是这种情况当用户没有有效的 access_token 时。

我已经用 POSTMAN 测试了我的端点,看起来没问题,但我还需要编写一些单元测试来证明。那么,这样做的正确方法是什么?

【问题讨论】:

    标签: python unit-testing flask jwt


    【解决方案1】:

    由于这是一个 API,您真正需要的是集成测试。我这样做的方式是这样的:

    1. 创建一个测试用户
    2. 请求一个有效的令牌
    3. 使用有效令牌访问受保护的资源
    4. 使用无效令牌访问资源
    5. 确保涵盖每个控制器中的所有方法的任何其他测试。
    6. 删除测试用户

    你最终会得到很多可以自动化的集成测试,邮递员在这方面做得很好,你可以为每个端点构建集合并轻松运行它们。

    除此之外,您还可以开始测量每个请求执行所需的时间,并可以开始查看那些耗时过长的请求。

    单元测试你的方法中的逻辑,但不是你的授权系统,不是你的端点,也不是你的控制器。那些你集成测试的人。

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多