如何检查哪个字段在 Django REST Framework 中引发了 ValidationError
How to check which field raised a ValidationError in Django REST Framework
我正在使用 self.assertRaisesMessage(rest_framework_exceptions.ValidationError, expected_message)
来测试我的自定义验证器。有没有什么方法可以使用它或类似于 assert which field caused the validation error to be raised?
用例是我有两个验证器,它们针对不同的字段引发相同的错误,并且由于它们之间的关系(开始和结束日期),不可能编写在引入结束之前失败的测试日期并且在引入结束日期后出于正确的原因也会成功。
你能通过测试整个表单来断言错误吗?喜欢:
class FooSerializer(Serializer):
start_date = DateField()
end_date = DateField()
foo = FooSerializer(data={'start_date': '2018-01-01', 'end_date': 'incorrect value'})
self.assertFalse(foo.is_valid())
self.assertNotIn('start_date', foo.errors)
self.assertIn('end_date', foo.errors)
我正在使用 self.assertRaisesMessage(rest_framework_exceptions.ValidationError, expected_message)
来测试我的自定义验证器。有没有什么方法可以使用它或类似于 assert which field caused the validation error to be raised?
用例是我有两个验证器,它们针对不同的字段引发相同的错误,并且由于它们之间的关系(开始和结束日期),不可能编写在引入结束之前失败的测试日期并且在引入结束日期后出于正确的原因也会成功。
你能通过测试整个表单来断言错误吗?喜欢:
class FooSerializer(Serializer):
start_date = DateField()
end_date = DateField()
foo = FooSerializer(data={'start_date': '2018-01-01', 'end_date': 'incorrect value'})
self.assertFalse(foo.is_valid())
self.assertNotIn('start_date', foo.errors)
self.assertIn('end_date', foo.errors)