如何使用请求和ZipFile进行Monkeypatch功能?

时间:2019-07-11 09:44:42

标签: python python-requests pytest monkeypatching

我想使用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文件外不会没有其他东西,我无法对其进行修补。

有人知道如何解决这个问题吗?

0 个答案:

没有答案