Как проверить, если исключение в порядке в unittest - PullRequest
2 голосов
/ 09 января 2012

У меня вопрос по unittest.Как сделать тест, чтобы увидеть, если есть исключение?пример:

Datum (3,32,2012)

Если я называю класс Datum следующим образом, где месяц не находится в диапазоне (> 31), все в порядке, выдается исключениеи это нормально.Но я хочу сделать юнит-тест, если Exception в порядке, если ловит исключение, в порядке ..?Я сделал некоторые тесты, но они были только с Истинными значениями, и они в порядке.Я понятия не имею, как проверить таким образом .. и искать в интернете .. спасибо за ответ.

import date,datetime

class Datum():
    def __init__(self,day,month,year):
        try:
            d=int(day)
            dvm=stevilodnivmesecu(month,year)
            if (d>=1 and d<=dvm):
                self.d=d
            else:
                raise Exception("Day out of moth range")
        except:
            raise ValueError("Day is not a number")
        try:
            m=int(month)
            if m>=1 and m<=12:
                self.m=m
            else:
                raise Exception("Month out of range")
        except:
            raise ValueError("Month is not a number")
        try:
            l=int(year)
            if l>=1000 and l<=9999:
                self.l=l
            else:
                raise Exception("Year is out of range")
        except:
            raise ValueError("Year is not a number")

    def __repr__(self):
        return repr(self.d)+"."+repr(self.m)+"."+repr(self.l)

def monthrange(month,year):
    if month==2:
        if jeprestopno(year)==True:
            return 29
        elif jeprestopno(year)==False:
            return 28
    elif month>=1 and month<=7:
        if month%2!=0:
            return 31
    elif month>7 and month<=12:
        if month%2==0:
            return 31
    elif month>=1 and month<=7:
        if month%2==0:
            return 30
    elif month>7 and month<=12:
        if month%2!=0:
            return 30
    else:
        pass

def oneplusyear(year):
    if year%4==0 or (year!=100 and year%4==0) or (year%400==0 and year%100==0):
        return True
    else:
        return False

1 Ответ

8 голосов
/ 09 января 2012

Используйте

self.assertRaises(ValueError,Datum,3,32,2012)

в своем тесте unittest.TestCase, чтобы утверждать, что Datum(3,32,2012) поднимает ValueError.

Ссылка:

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