Question

I'm trying to write a unit test that will ensure an HTTPException is raised when necessary. Here is the test:

import unittest  
from requests import HTTPError
import pyport

 # Code omitted...
 def test_bad_item_type(self):
     """A bad item type should raise a HTTPError"""
     test_type = 'bad'
     test_id = 1986134
     self.assertRaises(HTTPError, pyport.get_item(test_type, test_id))

Which produces the following:

ERROR: test_bad_item_type (__main__.TestPyportFunctions) A bad item
type should raise requests.HTTPError
---------------------------------------------------------------------- 
Traceback (most   recent call last):   File "./tests.py", line 65, in
test_bad_item_type
    self.assertRaises(HTTPError, pyport.get_item(test_type, test_id))   File    "/home/sean/workspace/pyport/pyport.py", line 54, in get_item
    response.raise_for_status()   File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 741, fin raise_for_status
    raise HTTPError('%s Client Error' % self.status_code) HTTPError: 404 Client Error

The exception is raised, but it is not caught by the test. This is similar to what happened in this question, but it is not quite the same. Can someone tell me what I'm missing?

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top