Django视图测试报错:Client.get()缺少必填参数'path'
解决Django测试中Client.get()报TypeError的问题
错误根源
你遇到的TypeError: Client.get() missing 1 required positional argument: 'path',核心问题是未实例化Client类:
测试代码里client = Client仅绑定了类对象,没有创建类的实例。直接用类调用get()方法时,Python会把reverse('login')识别为类方法的第一个参数self,而非要求的path参数,因此触发错误。
修复后的测试代码
from django.test import TestCase, Client from django.urls import reverse from foodsystem_app.models import discount,menu import json class TestViews(TestCase): def test_login_GET(self): # 修正:创建Client类的实例 client = Client() response = client.get(reverse('login')) self.assertEquals(response.status_code,200) self.assertTemplateUsed(response,'foodsystem/login.html')
额外验证点
- URL名称匹配:确保
urls.py中已为登录视图正确命名为login,示例:# foodsystem_app/urls.py from django.urls import path from . import views urlpatterns = [ path('login/', views.login_request, name='login'), ] - 模板路径一致:测试断言的模板是
foodsystem/login.html,但视图返回的是login.html。若模板实际位于foodsystem_app/templates/foodsystem/login.html,需修改视图中的模板路径:# 视图中修正模板路径 return render(request=request, template_name="foodsystem/login.html", context={"login_form":form})
内容的提问来源于stack exchange,提问作者user18625843
相关产品推荐
相关产品推荐

