首页 > 解决方案 > Django 测试,验证是否自动创建了 Profile

问题描述

在此先感谢,如何验证在用户创建引发测试后自动创建配置文件?我在 TestCase 文档中进行了搜索,但什么也没找到,但我确定我遗漏了一些非常明显的东西。

from django.test import TestCase
from django.contrib.auth import get_user_model
from users.models import Profile

class test_user_creation(TestCase):

def test_create_user(self):

    User = get_user_model()

    new_user = User.objects.create_user(
        username="New_user", email="New_user@user.com", date_of_birth="2002-12-23")

    self.assertEqual(new_user.username, "New_user")
    self.assertEqual(new_user.email, "New_user@user.com")
    self.assertEqual(new_user.date_of_birth, "2002-12-23")
    self.assertIs(new_user.is_admin, False)
    self.assertIs(new_user.is_staff, False)
    self.assertEqual(
        new_user.profile, "New_user Profile")


    

最后一个是我要问的那个,它是这样工作的,但是如果不参考 Profile 类返回的字符串,我怎么能做到呢?

我的个人资料课程

class Profile(models.Model):
user = models.OneToOneField(
    settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

def __str__(self):
    return f'{self.user.username} Profile'

标签: pythondjango

解决方案


您可以尝试使用管理器找到它:

self.assertEqual(new_user.profile, Profile.objects.get(user=new_user))

推荐阅读