При попытке проверить данные, которые передаются в сериализатор , я хочу проверить не только ValidationError
, но и само сообщение об ошибке. В настоящее время он проверяет имя поля в serializer.errors
, но я хочу проверить "Reformat your question please."
. Каким будет чистый способ сделать это?
tests.py
class TestQuestionSerializer(TestCase):
'''Verify that when an invalid question is
submitted that a validation error is raised'''
@classmethod
def setUpTestData(cls):
cls.client_data = {
"invalid": {
"title": "Can I post a question?"
},
"valid": {
"title": "How can I post a question?"
}
}
def test_question_serializer_fail(self):
with self.assertRaises(ValidationError) as e:
serializer = QuestionSerializer(data=self.client_data['invalid'])
serializer.is_valid(raise_exception=True)
self.assertIn("title", serializer.errors)
serializers.py
class QuestionSerializer(serializers.Serializer):
title = serializers.CharField(max_length=50)
def validate_title(self, value):
regex = r"^[What|When|Where|How|Why]"
match = re.search(regex, value)
if not match:
raise serializers.ValidationError("Reformat your question please.")
return value
def create(self, validated_data):
return Question.objects.create(**validated_data)