2011-08-15 26 views
13

Tôi đang sử dụng dán để thực hiện một số thử nghiệm chức năng trên 'bộ điều khiển' của mình trong ứng dụng web.py của tôi. Trong một trường hợp, tôi đang cố gắng thử nghiệm cho một phản ứng 400 khi một bài viết không đúng định dạng được thực hiện cho một điểm cuối API. Đây là những gì thử nghiệm của tôi trông giống như:Thử nghiệm 400 lỗi có dán trên ứng dụng web.py

def test_api_users_index_post_malformed(self): 
    r = self.testApp.post('/api/users', params={}) 
    assert r.header('Content-Type') == 'application/json' 
    assert r.status == 400 

Nhưng tôi nhận được ngoại lệ sau đây:

AppError: Bad response: 400 Bad Request (not 200 OK or 3xx redirect for /api/users) 

tôi thấy dán có HttpException middleware, nhưng tôi không thể tìm thấy bất kỳ ví dụ về cách sử dụng nó hoặc thậm chí nếu đi đúng hướng. Bất kỳ đề xuất? Hoặc tôi chỉ đi về điều này sai?

+0

Dường như bạn cần phải nắm bắt lỗi. Hãy thử làm cho bài kiểm tra là một 'unittest.TestCase' và sử dụng phương thức' assertRaises' của nó: http://docs.python.org/library/unittest.html#unittest.TestCase.assertRaises –

+0

Tôi không nghĩ điều đó sẽ giúp tôi kiểm tra phản ứng của tôi. Ngoại lệ được nêu ra trong cuộc gọi self.testApp.post (...), vì vậy tôi không thể kiểm tra mã trạng thái của mình –

Trả lời

29

Tôi biết mình đang chậm trễ với bữa tiệc, nhưng tôi đã tìm kiếm câu trả lời cho cùng một vấn đề. Để cho phép TestApp vượt qua các phản hồi không phải 2xx/3xx, bạn cần phải yêu cầu cho phép "lỗi".

def test_api_users_index_post_malformed(self): 
    r = self.testApp.post('/api/users', params={}, expect_errors=True) 
    assert r.header('Content-Type') == 'application/json' 
    assert r.status == 400 

Hacking vui vẻ!

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