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印刷されません:一致が見つかりません!

4

2 に答える 2

4

引数を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)
于 2012-10-15T05:12:42.220 に答える
4

Pythonのバージョンに問題があるようです。バージョン2.6より前のPythonを使用していると思います。関数パラメーターを他の引数として関数に渡してみてください。つまり、タプル内に配置しないでください。これを試して。

self.assertRaises(Exception, helpers.get_value, m, 'start_date')
于 2012-10-15T05:13:12.867 に答える