In the pytest documentation it says that you can customize the output message when an assert
fails. I want to customize the assert
message when testing a REST API method it returns an invalid status code:
def test_api_call(self, client):
response = client.get(reverse('api:my_api_call'))
assert response.status_code == 200
So I tried to put a piece of code like this in conftest.py
def pytest_assertrepr_compare(op, left, right):
if isinstance(left, rest_framework.response.Response):
return left.json()
But the problem is left
is the actual value of response.status_code
so it's an int
instead of a Response
. However the default output messages throws something like:
E assert 400 == 201 E + where 400 = .status_code
Saying that the error 400 comes from an attribute status_code
of a object Response
.
My point is that there is a kind of introspection of the variable being evaluated. So, how can I customize the assert error message in a comfortable way to get a similar output to example posted above?