Ошибка в 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