如何在unittest中测试ok中的异常

时间:2012-01-09 19:14:34

标签: python unit-testing testing assert

我对unittest有疑问。 如何进行测试以查看是否存在异常? 一个例子:

基准(3,32,2012)

如果我像这样调用类Datum,其中月份不在范围内(> 31),那么一切正常,它会抛出异常并且没关系。但是如果Exception正常,我想做一个单元测试,如果正在捕获异常确定..? 我做了一些测试,但这些只有True值,而且没关系。我不知道如何以这种方式进行测试..并在互联网上搜索.. 谢谢你的答复。

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 个答案:

答案 0 :(得分:8)

使用

self.assertRaises(ValueError,Datum,3,32,2012)
在您的unittest.TestCase测试中

断言Datum(3,32,2012)提出ValueError

参考:

  • Documentation了解您可以制作的各类asserts 的TestCases。