我是测试新手,需要帮忙。
假设有这个方法:
from urllib.request import urlopen
def get_posts():
with urlopen('some url here') as data:
return json.loads(data.read().decode('utf-8'))
问题是如何测试这个方法(如果可能的话,使用mock.patch装饰器)?
现在我有的是:
@mock.patch('mymodule.urlopen')
def test_get_post(self, mocked_urlopen):
mocked_urlopen.__enter__ = Mock(return_value=self.test_data)
mocked_urlopen.__exit__ = Mock(return_value=False)
...
但它似乎没有起作用。
P.S. 是否有便捷的方式在测试中使用数据变量(类型为HTTPResponse)以便它可以只是一个简单的字符串?
mock
库,但是也许你可以查看unittest.mock文档以获取更多细节。 - Ericself.test_data
必须是一个具有read()
方法的对象,而不是字符串。 - jfs