2012-10-15 57 views
5

不self.assertRaises覆蓋異常聲明這是我的函數:在python單元測試用例

def get_value(request, param): 
    s = get_string(request, param) 
    value = re.search('(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)', s) 
    if not value: 
    print 'match not found!' 
    raise Exception('incorrect format: %s' % param) 

測試功能:

def test_get_value(self): 
    m = test_mocks.HttpRequestMock(REQUEST = {'start_date': '2011.07.31'}) 
    print '*************************' 
    print 'date format changed' 
    self.assertRaises(Exception, get_value, (m, 'start_date')) 
    print '********************* 

get_value不打印:比賽未找到

+0

感謝Bren的編輯。 –

+1

你的'helpers.get_date_param'調用'get_value'? – Ian

+0

更改了通話...我修改了發佈此問題的功能名稱! –

回答

3

看來你的python版本存在一些問題。我想你正在2.6以下使用python。 嘗試將函數參數作爲其他參數傳遞給函數,即不要將它們放入元組中。嘗試這個。

self.assertRaises(Exception, helpers.get_value, m, 'start_date') 
+0

感謝您的解釋...它的工作 –

3

你傳遞的參數assertRaises()錯誤,你應該通過他們這樣的:

self.assertRaises(Exception, helpers.get_value, m, 'start_date') 

這裏是一個完整的測試用例,對我的作品。第一次測試通過,第二次失敗。

import re 
from unittest import TestCase 

def get_value(s): 
    value = re.search('(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)', s) 
    if not value: 
     raise ValueError('incorrect format: %s' % s) 

class TesterScratch(TestCase): 
    # this one passes 
    def test_get_value(self): 
     s = '2011.07.31' 
     self.assertRaises(ValueError, get_value, s) 

    # this one fails, because the format is actually correct 
    def test_get_value2(self): 
     s = '2011-07-31' 
     self.assertRaises(ValueError, get_value, s) 
+0

是的,它的工作感謝您的幫助! –