【问题标题】:AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)AssertionError: 302 != 200 : 无法检索内容:响应代码为 302(预期为 200)
【发布时间】:2021-04-26 11:32:26
【问题描述】:

我正在尝试测试管理员并获取AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)

即使我在这里检查了solution,但我已经做了同样的事情并得到了同样的错误。

我的模型文件、管理文件和测试文件如下。

admin.py

from django.contrib import admin

# Register your models here.
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin

from . import models


class UserAdmin(BaseUserAdmin):
    ordering = ['id']
    list_display = ['email', 'name']


admin.site.register(models.User, UserAdmin)

测试/test_admin.py

from django.test import TestCase, Client
from django.contrib.auth import get_user_model
from django.urls import reverse

class AdminSiteTests(TestCase):
    
    def setUp(self):
        self.client = Client()
        self.admin_user = get_user_model().objects.create_user(
            email = 'admin@admin.com',
            password = 'admin'
        )

        self.client.force_login(self.admin_user)
        self.user = get_user_model().objects.create_user(
            email = 'test@londondevapp.com',
            password = 'Test@123',
            name = 'Test 1'
        )
    
    def test_user_listed(self):
        """Test that users are listed on user page"""

        url = reverse('admin:core_user_changelist')
        res = self.client.get(url)

        self.assertContains(res, self.user.name)
        self.assertContains(res, self.user.email)

【问题讨论】:

    标签: python django rest testing


    【解决方案1】:

    我从create_usercreate_superuser 进行了修复,它的工作! 在管理端代码的def setUp() 函数中。

    这是superuser 登录的东西,所以我没有使用create_user,而是输入create_superuser,测试是OK!

    class AdminSiteTests(TestCase):
        
        def setUp(self):
            self.client = Client()
            self.admin_user = get_user_model().objects.create_superuser( <-- #Here
                email = 'admin@admin.com',
                password = 'admin'
            )
    
            self.client.force_login(self.admin_user)
            self.user = get_user_model().objects.create_user(
                email = 'test@londondevapp.com',
                password = 'Test@123',
                name = 'Test 1'
            )
    

    【讨论】:

      【解决方案2】:

      这是谷歌所说的

      HTTP 响应状态码 302 Found 是执行 URL 重定向的常用方法。 HTTP/1.0 规范最初定义了这个代码,并给它一个描述短语“Moved Temporarily”而不是“Found”。带有此状态代码的 HTTP 响应将在标头字段 Location 中额外提供一个 URL

      它有重定向事件,所以这就是它给出代码 302 的原因,因为它希望你去某个不在会带你的页面上的地方。

      【讨论】:

      • 我从create_user 固定到create_superuser,它的工作!在管理端代码的def setUp() 函数中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 2019-08-17
      相关资源
      最近更新 更多