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

Dae*_*lus 1 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

Run Code Online (Sandbox Code Playgroud)

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

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

And*_*niu 5

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

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

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

不仅如此,您还可以开始测量每个请求执行所需的时间,并开始查看那些花费时间过长的请求。

对方法内部的逻辑进行单元测试,而不是对授权系统、端点和控制器进行单元测试。那些你集成测试的。