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

如何使用pytest-django测试非类封装的函数式API视图?

DRF函数式API接口正确测试实现

你现有代码的问题如下:

  • 测试代码语法错误:response.self.client.get(self.searchtxt_url)逻辑颠倒,应为给response变量赋值的语句response = self.client.get(self.searchtxt_url)
  • 未导入reverse函数,直接调用会触发未定义异常
  • DRF接口测试推荐使用框架自带的APIClient,比Django原生Client对DRF的响应结构、认证逻辑等适配性更好
  • 你提供的视图代码存在笔误:返回响应类应为Response(而非拼写错误的Reponse),需要从rest_framework.response导入

正确测试代码实现

# 首先确保你的urls.py中已经正确命名路由,示例:
# path('search/', get_search, name='search-txt')

from django.test import TestCase
from django.urls import reverse
from rest_framework.test import APIClient
from rest_framework import status

class TestViews(TestCase):
    def setUp(self):
        # 初始化DRF测试客户端
        self.client = APIClient()
        self.searchtxt_url = reverse('search-txt')
    
    def test_search_project(self):
        # 发送GET请求
        response = self.client.get(self.searchtxt_url)
        # 校验响应状态码
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        # 可选:校验返回内容结构符合预期
        self.assertIn("search-txt", response.data)
        # 可扩展校验返回的搜索内容是否符合预期
        # self.assertEqual(response.data["search-txt"], 你预期的搜索内容)

补充说明

如果你的接口需要携带请求参数(比如搜索关键词通常通过query parameter传递),可以在调用get方法时传入query_params参数:

response = self.client.get(self.searchtxt_url, query_params={"keyword": "测试内容"})

内容的提问来源于stack exchange,提问作者nitish agrawal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:57:02