如何使用REST API + Flask JWT Extended正确测试应用程序?

时间:2019-04-24 16:40:57

标签: python unit-testing flask jwt

假设我有一个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测试了端点,这似乎还可以,但是我还需要编写一些单元测试来证明。那么,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

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

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

您最终将获得许多可以自动化的集成测试,postman非常擅长于此,您可以为每个端点构建集合并轻松运行它们。

除此之外,您还可以开始衡量每个请求执行的时间,并开始查看花费太长时间的请求。

对方法内部的逻辑进行单元测试,但不对授权系统,对端点和控制器进行逻辑测试。您进行集成测试的人。