Как сделать тест на регулярное выражение в Python? - PullRequest
0 голосов
/ 30 апреля 2019

Я только начал тестировать свое веб-приложение.

Во-первых, я не уверен, нужно ли запускать тесты для полей модели регулярных выражений (как в моем коде), во-вторых, если тестирование необходимо, как я могу это сделать?

Я уже пробовал это решение: Юнит-тесты проходят проверку правильности регулярных выражений моделей в Django , но это не работает.

Для поля cf требуется строка из 16 символов, но моя функция test_cf_max_length () возвращает объект продавца, даже если введенный код неверен (<16 символов) </p>

models.py

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.py

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)

1 Ответ

0 голосов
/ 30 апреля 2019

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

Обратите внимание, что валидаторы не будут запускаться автоматически при сохранении модели, но если вы используете ModelForm, он будет запускать ваши валидаторы на любых полях, включенных в вашу форму.

А что касается необходимости тестирования, этот случай ясно показывает, что имеет смысл написать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...