Skip to content

Commit ae88f5c

Browse files
Ryan P Kilbycarltongibson
Ryan P Kilby
authored andcommitted
Minor cleanup for ModelSerializer tests (#5598)
* Replace assertRaises with assertRaisesMessage * Remove outdated implicit Meta.fields test * Simplify parent declared field test
1 parent 134a6f6 commit ae88f5c

File tree

1 file changed

+16
-53
lines changed

1 file changed

+16
-53
lines changed

tests/test_model_serializer.py

Lines changed: 16 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ class Meta:
123123
'non_model_field': 'bar',
124124
})
125125
serializer.is_valid()
126-
with self.assertRaises(TypeError) as excinfo:
127-
serializer.save()
126+
128127
msginitial = 'Got a `TypeError` when calling `OneFieldModel.objects.create()`.'
129-
assert str(excinfo.exception).startswith(msginitial)
128+
with self.assertRaisesMessage(TypeError, msginitial):
129+
serializer.save()
130130

131131
def test_abstract_model(self):
132132
"""
@@ -147,10 +147,10 @@ class Meta:
147147
serializer = TestSerializer(data={
148148
'afield': 'foo',
149149
})
150-
with self.assertRaises(ValueError) as excinfo:
151-
serializer.is_valid()
150+
152151
msginitial = 'Cannot use ModelSerializer with Abstract Models.'
153-
assert str(excinfo.exception).startswith(msginitial)
152+
with self.assertRaisesMessage(ValueError, msginitial):
153+
serializer.is_valid()
154154

155155

156156
class TestRegularFieldMappings(TestCase):
@@ -294,10 +294,9 @@ class Meta:
294294
model = RegularFieldsModel
295295
fields = ('auto_field', 'invalid')
296296

297-
with self.assertRaises(ImproperlyConfigured) as excinfo:
298-
TestSerializer().fields
299297
expected = 'Field name `invalid` is not valid for model `RegularFieldsModel`.'
300-
assert str(excinfo.exception) == expected
298+
with self.assertRaisesMessage(ImproperlyConfigured, expected):
299+
TestSerializer().fields
301300

302301
def test_missing_field(self):
303302
"""
@@ -311,13 +310,12 @@ class Meta:
311310
model = RegularFieldsModel
312311
fields = ('auto_field',)
313312

314-
with self.assertRaises(AssertionError) as excinfo:
315-
TestSerializer().fields
316313
expected = (
317314
"The field 'missing' was declared on serializer TestSerializer, "
318315
"but has not been included in the 'fields' option."
319316
)
320-
assert str(excinfo.exception) == expected
317+
with self.assertRaisesMessage(AssertionError, expected):
318+
TestSerializer().fields
321319

322320
def test_missing_superclass_field(self):
323321
"""
@@ -327,13 +325,7 @@ def test_missing_superclass_field(self):
327325
class TestSerializer(serializers.ModelSerializer):
328326
missing = serializers.ReadOnlyField()
329327

330-
class Meta:
331-
model = RegularFieldsModel
332-
fields = '__all__'
333-
334328
class ChildSerializer(TestSerializer):
335-
missing = serializers.ReadOnlyField()
336-
337329
class Meta:
338330
model = RegularFieldsModel
339331
fields = ('auto_field',)
@@ -348,22 +340,6 @@ class Meta:
348340

349341
ExampleSerializer()
350342

351-
def test_fields_and_exclude_behavior(self):
352-
class ImplicitFieldsSerializer(serializers.ModelSerializer):
353-
class Meta:
354-
model = RegularFieldsModel
355-
fields = '__all__'
356-
357-
class ExplicitFieldsSerializer(serializers.ModelSerializer):
358-
class Meta:
359-
model = RegularFieldsModel
360-
fields = '__all__'
361-
362-
implicit = ImplicitFieldsSerializer()
363-
explicit = ExplicitFieldsSerializer()
364-
365-
assert implicit.data == explicit.data
366-
367343

368344
class TestDurationFieldMapping(TestCase):
369345
def test_duration_field(self):
@@ -862,44 +838,31 @@ class Meta:
862838
model = MetaClassTestModel
863839
fields = 'text'
864840

865-
with self.assertRaises(TypeError) as result:
841+
msginitial = "The `fields` option must be a list or tuple"
842+
with self.assertRaisesMessage(TypeError, msginitial):
866843
ExampleSerializer().fields
867844

868-
exception = result.exception
869-
assert str(exception).startswith(
870-
"The `fields` option must be a list or tuple"
871-
)
872-
873845
def test_meta_class_exclude_option(self):
874846
class ExampleSerializer(serializers.ModelSerializer):
875847
class Meta:
876848
model = MetaClassTestModel
877849
exclude = 'text'
878850

879-
with self.assertRaises(TypeError) as result:
851+
msginitial = "The `exclude` option must be a list or tuple"
852+
with self.assertRaisesMessage(TypeError, msginitial):
880853
ExampleSerializer().fields
881854

882-
exception = result.exception
883-
assert str(exception).startswith(
884-
"The `exclude` option must be a list or tuple"
885-
)
886-
887855
def test_meta_class_fields_and_exclude_options(self):
888856
class ExampleSerializer(serializers.ModelSerializer):
889857
class Meta:
890858
model = MetaClassTestModel
891859
fields = ('text',)
892860
exclude = ('text',)
893861

894-
with self.assertRaises(AssertionError) as result:
862+
msginitial = "Cannot set both 'fields' and 'exclude' options on serializer ExampleSerializer."
863+
with self.assertRaisesMessage(AssertionError, msginitial):
895864
ExampleSerializer().fields
896865

897-
exception = result.exception
898-
self.assertEqual(
899-
str(exception),
900-
"Cannot set both 'fields' and 'exclude' options on serializer ExampleSerializer."
901-
)
902-
903866
def test_declared_fields_with_exclude_option(self):
904867
class ExampleSerializer(serializers.ModelSerializer):
905868
text = serializers.CharField()

0 commit comments

Comments
 (0)