2012-10-15 19 views
5

は、これは私の関数である:例外声明

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') 

ここで私の作品の完全なテストケースです。最初のテストは合格し、2番目のテストは失敗します。

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

はい、助けてくれてありがとう! –