2016-08-05 5 views
0

私はHTTPリクエストを呼び出すコードをいくつか持っています。私は、404レスポンスに対して特定の例外を発生させるべき否定的なケースをテストしたいと思います。しかし、呼び出す関数の副作用としてHTTPErrorを呼び出すことができるようにパラメータを模擬する方法を理解しようとしています。模擬オブジェクトは受け入れ可能なパラメータではない呼び出し可能な関数を作成するようです。スカラー値パラメータを模倣したPython

def scrape(variant_url): 
    try: 
     with urlopen(variant_url) as response: 
      doc = response.read() 
      sizes = scrape_sizes(doc) 
      price = scrape_price(doc) 
      return VariantInfo([], sizes, [], price) 

    except HTTPError as e: 
     if e.code == 404: 
      raise LookupError('Variant not found!') 

     raise e 

def test_scrape_negative(self): 
    with self.assertRaises(LookupError): 
     scrape('foo') 

答えて

1

モックurlopen()例外を発生させます。あなたはモックのside_effect attributeを設定することでこれを行うことができます:

with mock.patch('urlopen') as urlopen_mock: 
    urlopen_mock.side_effect = HTTPError('url', 404, 'msg', None, None) 
    with self.assertRaises(LookupError): 
     scrape('foo') 
+0

ニート!ありがとうございました –

関連する問題