gpt4 book ai didi

python - Django 如何使用验证器测试模型功能

转载 作者:行者123 更新时间:2023-12-04 03:33:52 26 4
gpt4 key购买 nike

我的 models.py看起来像这样:

def validate_yearofbirth(value):
text = str(value)
if len(text) < 4 or len(text) > 4 or value < 1900:
raise ValidationError('Please insert your year of birth!')

class Personal(models.Model):
firstname = models.CharField(max_length = 100)
lastname = models.CharField(max_length = 100)
yearofbirth = models.PositiveIntegerField(validators = [validate_yearofbirth], null = True)

@property
def fullname(self):
return '{}, {}'.format(self.lastname, self.firstname)

def __str__(self):
return self.fullname

@property
def age(self):
year = datetime.now().year
age = year - self.yearofbirth
return age
任何人都知道如何为 def validate_yearofbirth 编写测试和 def age ?我只设法为 def fullname 写了一个测试,但我还没有想出如何为不是 def __str__(self) 的函数编写测试。 .
我的 test_models.py此类的文件如下所示:
class TestModel(TestCase):

def test_personal_str(self):
fullname = Personal.objects.create(nachname = 'Last Name', vorname = 'First Name')

self.assertEqual(str(fullname), 'Last Name, First Name')
您也可以忽略 return age 的事实。并不总是返回“真实”年龄——这对我的类(class)来说并不重要。

最佳答案

我会这样做:

from django.test import TestCase
from myapp.models import Personal

class TestPersonalModel(TestCase):

def setUp(self):
Personal.objects.create(lastname = 'Schuhmacher', firstname = 'Michael', yearofbirth=1969)

def test_fullname(self):
person = Personal.objects.get(lastname="Schuhmacher")
self.assertEqual(person.fullname, 'Schuhmacher, Michael')

def test_age(self):
person = Personal.objects.get(lastname="Schuhmacher")
self.assertEqual(person.age, 52)

def test_year_of_birth_validator(self):
with self.assertRaises(ValidationError):
Personal.objects.create(lastname = 'Einstein', firstname = 'Albert', yearofbirth=1879)

关于python - Django 如何使用验证器测试模型功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67331863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com