Как я могу написать модульный тест для функции, которая делает сетевой запрос без изменения его интерфейса?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу написать модульный тест для функции, которая делает сетевой запрос без изменения его интерфейса?

Сообщение Anonymous »

Я прочитал, что < /p>

Код: Выделить всё

Unit tests run fast.
If they don’t run fast, they aren’t unit tests.

A test is not a unit test if
1. It talks to a database.
2. It communicates across a network.
3. It touches the file system.
4. You have to do special things to your environment (such as editing configuration files) to run it.

in Working Effectively with legacy code (book).
< /code>
У меня есть функция, которая загружает zip из Интернета, а затем преобразует ее в объект Python для определенного класса.import typing as t

def get_book_objects(date: str) -> t.List[Book]:
# download the zip with the date from the endpoint
res = requests.get(f"HTTP-URL-{date}")

# code to read the response content in BytesIO and then use the ZipFile module
# to extract data.

# parse the data and return a list of Book object
return books
Допустим, я хочу написать модульный тест для функции get_book_objects . Тогда как я должен написать модульный тест, не делая сетевого запроса? Я имею в виду, что я предпочитаю считывать запрос сетевой системы, потому что он будет намного быстрее, чем выполнение запроса в сеть, хотя написано, что хороший модульный тест также не затрагивает файловую систему, с которой я буду в порядке. от функции модульного тестирования.
Что вы будете делать, чтобы написать хороший модульный тест в такой ситуации?

Подробнее здесь: https://stackoverflow.com/questions/746 ... without-ch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»