Django 测试 client.get() 返回 302 代码而不是 200

Kin*_*gFu 7 django django-urls django-tests

在 url 上运行测试返回 302 而不是 200。然而在生产中使用重定向测试器测试相同的 url 返回 200。不确定发生了什么。

测试.py

def test_detail(self):
    response = self.client.get('/p/myproduct-detail.html')
    self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)

网址.py

    url(r'^p/(?P<slug>[-\w\d]+).html$', main.views.product_detail, 
        name='product-detail'),
Run Code Online (Sandbox Code Playgroud)

视图.py

def product_detail(request, slug):
    stuff...
    return render(request, 'product-detail.html', {})
Run Code Online (Sandbox Code Playgroud)

如果我添加follow=Trueclient.get()我会按预期收到 200 个代码。

Ala*_*air 8

response['location']在您的assertEqual行之前打印您的测试中的值。它将显示客户端被重定向到的位置(例如登录页面)。

def test_detail(self):
    response = self.client.get('/p/myproduct-detail.html')
    print(response['location'])
    self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)