【发布时间】:2022-11-30 19:27:40
【问题描述】:
我正在尝试在 Django 中测试我的视图,当我运行它时出现错误
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
response = client.get(reverse('login'))
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response,'foodsystem/login.html')
response = client.get(reverse('login'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Client.get() missing 1 required positional argument: 'path'
----------------------------------------------------------------------
Ran 4 tests in 0.005s
FAILED (errors=1)
我不确定应该将什么作为路径名传递。这是我正在测试的代码
def login_request(request):
if request.method == "POST":
form = AuthenticationForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
messages.info(request, f"You are now logged in as {username}.")
return redirect("main:homepage")
else:
messages.error(request,"Invalid username or password.")
else:
messages.error(request,"Invalid username or password.")
form = AuthenticationForm()
return render(request=request, template_name="login.html", context={"login_form":form})
【问题讨论】:
-
您正在将
client设置为Client类,而不是初始化实例。因此,get的第一个参数通常是self,现在传递给reverse('login')。通过添加括号修复它:client = Client()。 -
谢谢!!那行得通