这是我的函数:
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
不打印:找不到匹配项!
您的python版本似乎存在一些问题。我猜你在 2.6 版以下使用 python。尝试将函数参数作为其他参数传递给函数,即不要将它们放在元组中。试试这个。
self.assertRaises(Exception, helpers.get_value, m, 'start_date')
你错误
地将参数传递给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)