我想使用pytest修补以下功能,因为我想提供自己的本地测试文件。
def iterate_urls(dl_urls: list, path: str):
request = None
for url in dl_urls:
try:
request = requests.get(url, allow_redirects=True)
except requests.exceptions.RequestException as err:
exit('Error: URLs are invalid. URL format might have been changed or website might have moved. ' + str(err))
zipped_data = ZipFile(BytesIO(request.content))
zipped_data.extractall(path)
我已经尝试了以下方法:
@pytest.fixture(autouse=True)
def patched_env(monkeypatch):
class GetMockReturn:
content = bytes()
monkeypatch.setenv('DATABASE', 'test_update.db')
monkeypatch.setattr(dp.requests, 'get', lambda *_, **__: GetMockReturn)
monkeypatch.setattr(dp, 'ZipFile', lambda *_, **__: None)
reload(sr)
dp模块已导入,其中包含需要修补的iterate_urls()函数,而sr模块是此处要测试的模块
我的问题是ZipFile除了真正的Zip文件外不会没有其他东西,我无法对其进行修补。
有人知道如何解决这个问题吗?