Python как проверить почему 2 вещи не равны
Я пытаюсь запустить тест, чтобы проверить, что ошибка возникает, если я пытаюсь забрать объект закрытого предложения, но ошибка не возникает, потому что оператор сравнения возвращает false, хотя он распознает статус моего предложения как закрытое.
Ниже отображается только соответствующий код, а не полный фактический код:
test
def test_pickup_closed_offer(self):
# open offer created as self.offer in test setup
offer = self._CloseOfferWorkflow.close_offer(self.offer.id)
logger.debug(offer.status) # CLOSED
logger.debug(offer.status == Offer.STATUS.CLOSED) # TRUE
with self.assertRaisesMessage(OfferClosedError, "Offer is already closed"): # Failed to raise
match = self._PickupOfferWorkflow.pickup_offer(
offer_id = offer.id
)
модель джанго для предложения
from django.db import models
from enum import Enum
OFFER_STATUS_CHOICES = (
('AVAILABLE', 'Available'),
('CLOSED', 'Closed')
)
class Offer(models.Model):
class STATUS(Enum):
AVAILABLE = 'AVAILABLE'
CLOSED = 'CLOSED'
def __str__(self):
return self.value
status = models.CharField(max_length=256, choices=OFFER_STATUS_CHOICES)
метод "забрать_предложение"
class PickupOfferWorkflow:
_OfferController = OfferController()
def pickup_offer(self, offer_id):
offer = Offer.objects.get(id=offer_id)
# Validate input
self._OfferController.validate_offer_pickup(offer)
OfferController validator
def validate_offer_pickup(self, offer):
# Validate input
self.validate_offer_not_closed(offer.status)
def validate_offer_not_closed(self, status):
if status == Offer.STATUS.CLOSED:
raise OfferClosedError("Offer is already closed", "OFFER_CLOSED")
logger.debug(status) #CLOSED
logger.debug(Offer.STATUS.CLOSED) #CLOSED
logger.debug(status == Offer.STATUS.CLOSED) #FALSE
закрыть предложение
class CloseOfferWorkflow:
def close_offer(self, offer_id):
offer = Offer.objects.get(id=offer_id)
offer.status = Offer.STATUS.CLOSED
offer.save()
return offer
Странно то, что оператор сравнения возвращает true в функции test, но false в функции validator.