我刚开始在我的网络应用程序上进行测试。
首先,我不确定是否有必要在正则表达式模型字段上运行测试(如我的代码中的那个),其次,如果测试是必要的,我该怎么办?
我已经尝试过这个解决方案:Unit Tests pass against regex validator of models in Django但它没有用。
cf字段需要16个字符串,但我的函数test_cf_max_length()返回卖方对象,即使输入的cf错误(<16个字符)
models.朋友
class Seller(User):
cf = models.CharField(validators=[RegexValidator(regex='^.{16}$', message='Social Security Number', code='nomatch')], max_length=16)
iban = models.CharField(validators=[RegexValidator(regex='^.{27}$', message='IBAN', code='nomatch')], max_length=27)
is_seller = models.BooleanField(default=False)
tests.朋友
def setUpTestData(cls):
Seller.objects.create(username='clara', cf='12345690123456', iban='123456789012345678901234567')
def test_cf_max_length(self):
seller = Seller.objects.get(id=1)
with self.assertRaises(ValidationError):
if seller.full_clean():
seller.save()
self.assertEqual(Seller.objects.filter(id=1).count(), 0)
https://docs.djangoproject.com/en/2.2/ref/validators/#how-validators-are-run
请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序。
关于测试的必要性,这个案例清楚地告诉你,编写它们是有意义的。