Как проверить ValidationError в функции с помощью assertRaises()

Я нашел эту assertRaises() для тестирования валидаторов в pytest, но я не могу использовать ее в своей тестовой функции, потому что все примеры используют классы. Все примеры, которые я нашел, используют self.assertRaises(), но я не могу использовать self. Примеры, которые я пытался понять:

model.py - модель, которую я тестирую на наличие валидаторов `

class AdTextTemplate(models.Model):
    adtext_template_headline_1 = models.CharField(max_length=270, validators=[headline_with_keyword_validation])
    adtext_template_headline_2 = models.CharField(max_length=270, validators=[headline_with_keyword_validation])
    adtext_template_description_1 = models.CharField(max_length=810, validators=[description_with_keyword_validation])
    adtext_template_description_2 = models.CharField(max_length=810, validators=[description_with_keyword_validation])
    campaign = models.ManyToManyField(Campaign, blank=True)

conftest.py

@pytest.fixture
def campaigns(users):
    lst = []
    for user in users:
        lst.append(Campaign.objects.create(campaign_name='test_campaign', user=user))
    return lst


@pytest.fixture
def adtext_templates_headline_exceed_char_limit(campaigns):
    lst = []
    for campaign in campaigns:
        x = AdTextTemplate.objects.create(
            adtext_template_headline_1='test template headline1 that have 41char',
            adtext_template_headline_2='test template headline2 that have 41char',
            adtext_template_description_1='test template description 1',
            adtext_template_description_2='test template description 2',
            )
        x.campaign.add(campaign)
        lst.append(x)
    return lst

tests.py

@pytest.mark.django_db
def test_validation_error(adtext_templates_headline_exceed_char_limit):
    adtext_template = adtext_templates_headline_exceed_char_limit[0]
    with adtext_template.assertRaises(ValidationError):
        assert adtext_template.full_clean()

Я знаю, что часть adtext_template.assertRaises() не очень хорошая, потому что там должно быть self.assertRaises(ValidationError), но мой тест не является классом. Я бы хотел, чтобы так и оставалось, потому что мой наставник сказал, что данные для тестирования должны быть в fixtures в conftest.py, а тесты должны быть в test и быть настолько простыми и понятными, насколько это возможно.

Также я не могу написать класс в tests.py, который будет работать :/.

Вернуться на верх