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.

Вернуться на верх