Как monkeypatch функция с запросами и ZipFile? - PullRequest
0 голосов
/ 11 июля 2019

Я хотел бы установить следующую функцию с помощью 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-файла, и я не могу его исправить.

Кто-нибудь знает, как это обойти?

...