2012-10-15 26 views
5

Đây là chức năng của tôi: chức năngtuyên bố ngoại lệ không được self.assertRaises trong trường hợp kiểm tra đơn vị 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) 

kiểm tra:

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 không in: trận đấu không tìm thấy!

+0

cảm ơn Bren để chỉnh sửa. –

+1

Các cuộc gọi 'helpers.get_date_param' của bạn' get_value'? – Ian

+0

đã thay đổi cuộc gọi ... tôi đã sửa đổi tên chức năng để đăng câu hỏi ở đây! –

Trả lời

3

Dường như có vấn đề với phiên bản python của bạn. Tôi đoán bạn đang sử dụng python bên dưới phiên bản 2.6. Thử chuyển các tham số hàm như các đối số khác để hoạt động tức là không đặt chúng vào trong bộ tuple. Thử cái này.

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

cảm ơn lời giải thích ... nó đã hoạt động –

3

Bạn đang đi qua các đối số assertRaises() không đúng cách, bạn nên vượt qua chúng như thế này:

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

Dưới đây là một trường hợp thử nghiệm đầy đủ mà làm việc cho tôi. Bài kiểm tra đầu tiên trôi qua và bài kiểm tra thứ hai không thành công.

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

có nó đã làm việc nhờ sự giúp đỡ! –

Các vấn đề liên quan