如何针对Django Rest Framework APIViewAssertRaises(ValidationError)?

4dc9hkyq  于 2023-05-01  发布在  Go
关注(0)|答案(1)|浏览(166)

我有我的看法:

class MyView(APIView):
    def post(...):
        ...
        raise ValidationError('blah')

还有我的考验

def test_myview(...):
    factory = APIRequestFactory()
    request = factory.post('/myview', data=...)
    with self.assertRaises(ValidationError):
        MyView.as_view()(request)

我得到AssertionError: ValidationError not raised
我尝试调用它并打印调用结果:

def test_myview(...):
    factory = APIRequestFactory()
    request = factory.post('/myview', data=...)
    resp = MyView.as_view()(request)
    print(resp)

它是<Response status_code=400, "text/html; charset=utf-8">,所以如果我想测试响应代码等,它是正确的,但是如果我想AssertRaises,我应该怎么做?

db2dz4w8

db2dz4w81#

如果您正在寻找Assert验证错误消息的方法,您可以只检查响应的详细信息(假设包含'blah')。
DRF处理异常并返回400,这就是为什么你不能在单元测试中看到它。参见django-rest-framework.org/api-guide/exceptions

相关问题