You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Ninja JWT自动化测试中如何在Setup方法获取Token?

Django Ninja JWT自动化测试中如何在Setup方法获取Token?

嘿,我完全懂你的烦恼——每次测试API都要手动处理Token太繁琐了,把Token获取逻辑放在setUp方法里,让所有测试用例自动复用,确实是最高效的做法。我来给你一步步拆解解决方案:

首先要明确一个前提:获取JWT Token需要合法的用户凭证,所以我们得先在setUp里创建一个测试用户,不然登录请求肯定会失败。接下来就可以调用Ninja JWT自带的Token接口来拿到凭证了。

下面是修正后的完整测试代码,每一步都标了注释:

from django.test import TestCase
from django.contrib.auth.models import User
from ninja_extra.testing import TestClient
from ninja_jwt.controller import NinjaJWTDefaultController
from .api import MyAPIController

class DepartmentTest(TestCase):
    def setUp(self) -> None:
        # 1. 先创建一个测试用户,用于获取Token
        self.test_user = User.objects.create_user(
            username="test",
            password="testPassword"
        )
        
        # 2. 初始化JWT控制器的测试客户端
        self.jwt_client = TestClient(NinjaJWTDefaultController)
        
        # 3. 发送POST请求到默认的Token获取端点,传入用户名密码
        token_response = self.jwt_client.post(
            "/api/token/",
            json={"username": "test", "password": "testPassword"}
        )
        
        # 4. 从响应里提取Access Token,保存为实例变量
        self.access_token = token_response.json()["access"]
        
        # 5. 初始化你的API控制器客户端,并且把Token默认加到请求头里
        self.api_client = TestClient(MyAPIController)
        self.api_client.default_headers["Authorization"] = f"Bearer {self.access_token}"

    def test_department_api(self):
        # 现在测试接口时,直接用api_client发送请求就自动带Token了
        response = self.api_client.get("/your-department-endpoint/")
        # 这里可以根据你的API预期结果写断言
        self.assertEqual(response.status_code, 200)

几个关键细节要注意:

  • 端点路径:Ninja JWT默认的Token获取端点是/api/token/,如果你的项目里配置了自定义的URL前缀(比如修改了JWT_AUTH_URLS),一定要对应调整这个路径。
  • 默认请求头:把Token加到api_client的default_headers里后,所有测试方法里用这个客户端发请求都会自动带上Authorization: Bearer <token>头,不用每次手动设置。
  • 数据库自动清理:Django的TestCase会在每个测试用例执行完成后自动回滚数据库,所以不用担心测试用户会残留到下一个测试里。

如果后续需要用刷新Token,同理可以调用/api/token/refresh/端点,不过大多数测试场景下,用access_token就足够了。

备注:内容来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:13:13