Вы бы «насмехались» над этой функцией, чтобы получить значение, позволяющее проверить оставшуюся логику в тестируемой системе (в данном случае, метод download_csv
).
Предполагая, что у нас естьТаким образом, с требованиями.txt,
pytest
mock
с файлом test.py
, подобным этому, мы можем высмеивать функцию decompress_csv
.
import mock
def decompress_csv():
raise Exception("This will never be called by the test below")
def download_csv():
decompressed = decompress_csv()
return f"{decompressed} downloaded and processed"
def test_download_csv():
# These additional variables are just to underscore what's going on:
module_that_contains_function_to_be_mocked = 'test'
mock_target = f"{module_that_contains_function_to_be_mocked}.decompress_csv"
with mock.patch(mock_target, return_value='fake decompressed output'):
assert download_csv() == "fake decompressed output downloaded and processed"
Обратите внимание, что в обычной ситуации ваш тесткод, скорее всего, будет в файле, отличном от кода, который он тестирует;вот почему я указал, что module_that_contains_function_to_be_mocked
имеет решающее значение.