Django, как вызвать проверку свойства класса, чтобы вызвать исключение - PullRequest
0 голосов
/ 01 июня 2018

У меня есть эта функция, я пытаюсь проверить, больше ли суммы скидки, чем сумма счета, возникает ли ошибка проверки.Я застрял в фактическом срабатывании исключения, которое должно быть поднято в тесте.Смотри ниже

class Invoice(models.Model):
    @property   
    def inv_amount(self):
        amount = Sum(quantity * price)
        return amount

    @property
    def discount_amount(self):
        amount = Sum(discount)
        return amount  

    def validate_amount(self):
        if self.discount_amount > self.inv_amount:
            raise ValidationError("discount amount cannot be greater")

def_test_validate_amount_greater_than_discount():
    with pytest.raises(ValidationError) as e:
       #Trigger the exception

1 Ответ

0 голосов
/ 02 июня 2018

Чтобы вызвать исключение, вы просто должны вызвать i.validate_amount() (будучи i объектом счета с неправильными значениями) внутри вашего with.

Также вы можете использовать e, чтобы проверить, является ли это ваше ожидаемое исключение .

Редактировать (основываясь на комментариях к вашему вопросу):

Вы не можете установить свойство, но вы можете установить значения quantity, price и discount, чтобы сделатьэто терпит неудачу, предполагая, что они являются частью класса Invoice

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...