单元测试-Python模拟一个参数



我有一些代码可以调用HTTP请求,我想对一个否定的情况进行单元测试,它应该为404响应引发一个特定的异常。然而,我正在试图弄清楚如何模拟参数,以便它可以在调用函数中引发HTTPError作为副作用,模拟对象似乎创建了一个可调用的函数,它不是它接受的参数,它只是一个标量值。

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')

模拟urlopen()以引发异常;可以通过设置mock:的side_effect属性来完成此操作

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

相关内容

  • 没有找到相关文章

最新更新