如何使用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
相关产品推荐
相关产品推荐

