如何在Python中对正则表达式进行测试?

问题描述 投票:0回答:1

我刚开始在我的网络应用程序上进行测试。

首先,我不确定是否有必要在正则表达式模型字段上运行测试(如我的代码中的那个),其次,如果测试是必要的,我该怎么办?

我已经尝试过这个解决方案: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)
python regex django unit-testing testing
1个回答
0
投票

https://docs.djangoproject.com/en/2.2/ref/validators/#how-validators-are-run

请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序。

关于测试的必要性,这个案例清楚地告诉你,编写它们是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.