Как задать несколько верных ответов assertEqual в django.test
При запросе по адресу DELETE /v1/job/335/ может быть два кода состояния HTTP (409 или 404). Оба не являются ошибкой с точки зрения логики программы. Но в тестах я не могу понять, как указать несколько верных вариантов для метода self.assertEqual. Подскажите, пожалуйста, может есть другой метод позволяющий установить несколько возможных правильных значений?
Код примера:
# DELETE запрос к API. 4.5 Остановка расчёта
def test_job_service_stop(self):
comment = {"comment": "because I want"}
response = client.delete('/v1/job/335/', data = comment)
self.assertEqual((response.status_code, status.HTTP_409_CONFLICT) or (response.status_code, status.HTTP_404_NOT_FOUND))
TypeError: assertEqual() missing 1 required positional argument: 'second'
Ответы (2 шт):
Просто замените на другой assert
self.assertTrue(response.status_code in [status.HTTP_409_CONFLICT, status.HTTP_404_NOT_FOUND])
Используйте assertIn:
self.assertIn(
response.status_code,
[status.HTTP_409_CONFLICT, status.HTTP_404_NOT_FOUND]
)
Можно, конечно, и assertTrue использовать, но у assertTrue минус, что когда условие не исполняется, то стандартное сообщение об ошибке не очень полезное: expected Trues was False. Нужно вручную добавлять сообщение об ошибке, чтоб видеть, какое реально значение получили.
assertIn же сам покажет реальное значение, которое пришло.