Ошибка в pytest с кодами ответов django

Я использую pytest для тестирования API моего django rest framework и получаю ошибку gan на следующем тесте:

def test_client_gets_invalid_when_submitting_invlaid_data(self):
    client = APIClient()
    response = client.post(path="/user/register/", data={})
    assert response.status_code is 400

traceback в pytest выглядит следующим образом:

>       assert response.status_code is 400
E       assert 400 is 400
E        +  where 400 = <Response status_code=400, "application/json">.status_code

core\tests\test_views.py:26: AssertionError

Я не понимаю, как эта ошибка может происходить, если 400 буквально равно 400?

Получается, что ключевое слово is проверяет идентичность в памяти, в то время как == проверяет значение.

Поэтому решением было просто изменить is на ==

https://www.geeksforgeeks.org/python-object-comparison-is-vs/

Оператор is сравнивает идентичность двух объектов, а не их значение. В данном случае response.status_code является объектом int, и 400 также является объектом int, но это разные экземпляры объектов int.

Вам следует использовать оператор == для сравнения их значений.

def test_client_gets_invalid_when_submitting_invlaid_data(self):
    client = APIClient()
    response = client.post(path="/user/register/", data={})
    assert response.status_code == 400
Вернуться на верх