Pytest-Django:不幸地隐藏了未捕获的异常

问题描述

我使用 pytest-django,不幸的是隐藏了未捕获的异常

@pytest.mark.django_db
def test_foo(client):
    url = reverse('foo')
    response = client.get(url)
    assert response.status_code == 200

我明白了:

E       assert 500 == 200
Assertion Failed

如何配置 pytest 以显示真正的异常(而不是 http 500 响应)?

解决方法

由于 pytest 使用 assert 语句进行测试,我们可以利用 assert 语句的扩展形式,如 here 所示。

在您的情况下,它看起来像:

@pytest.mark.django_db
def test_foo(client):
    url = reverse('foo')
    response = client.get(url)
    assert response.status_code == 200,response.exception_reason

在您的案例中检索 Exception 的语法可能略有不同,但希望您了解需要更改的内容。