«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Модуль Shutil Python для автоматического тестирования

Модуль Shutil Python для автоматического тестирования

Опубликовано 27 августа 2024 г.
Просматривать:308

Python

Введение

В динамичной сфере разработки программного обеспечения жизненно важно обеспечить качество приложений посредством автоматического тестирования. Автоматизированное тестирование включает в себя выполнение многочисленных тестов, требующих определенной настройки файлов и каталогов. Эффективная настройка и демонтаж тестовых сред — важная часть этого процесса, который часто может оказаться утомительной и подверженной ошибкам задачей без подходящих инструментов.

Нахождение подходящих инструментов для упрощения задач может иметь большое значение. Стандартный служебный модуль, известный как Shutil, представляет собой аббревиатуру утилит оболочки. Он обеспечивает файловые операции высокого уровня для копирования, перемещения и удаления файлов и каталогов, которые могут упростить управление тестовыми средами. В этом блоге объясняется, как модуль Shutil может упростить файловые операции при автоматизированном тестировании программного обеспечения.

Чтобы гарантировать, что каждый тест запускается в правильной среде, нам необходимо автоматизировать процесс установки, создав согласованную и изолированную тестовую среду.

Начало работы с Shutil

Модуль Shutil является частью стандартной библиотеки Python, поэтому нам не нужно устанавливать ничего дополнительно. Просто импортируйте его в начало вашего скрипта.

# Import shell utility module
import shutil

Основные методы копирования файлов

При тестировании приложения нам часто требуется определенный набор файлов данных. Вместо копирования файлов вручную четыре распространенных метода обеспечивают простой и эффективный способ копирования файла с помощью модуля Shutil.

  1. shutil.copy()
  2. shutil.copy2()
  3. shutil.copyfile()
  4. shutil.copyfileobj()

1. метод Shutil.copy()

shutil.copy(source, destination, *, follow_symlinks=True)

Этот метод копирует исходный файл в каталог или файл, указанный в пункте назначения, и возвращает место назначения файла. Он копирует данные файла и режим разрешений файла, но метаданные (время создания и изменения файла) скопированного файла не сохраняются. Источником и местом назначения должны быть объекты или строки, подобные пути. В качестве места назначения можно указать как файл, так и каталог. Если в пункте назначения указан путь к каталогу, файл будет скопирован в каталог назначения с именем файла, соответствующим исходному пути.
При работе с символической ссылкой:

  • Если Follow_symlinks=True, местом назначения будет копия файла, на который указывает символическая ссылка в источнике. Значением параметра Follow_symlinks по умолчанию является True.

  • Если Follow_symlinks=False, пункт назначения будет создан как символическая ссылка.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copy('source_file.txt', 'destination_file.txt')

2. метод Shutil.copy2()

shutil.copy2(source, destination, *, follow_symlinks=True)

Метод Shutil.copy2() предоставляет дополнительную функциональность по сохранению всех возможных метаданных файла. Остальные характеристики такие же, как и у метода Shutil.copy(). В качестве места назначения можно указать как файл, так и каталог. Если местом назначения является каталог, файл будет скопирован с тем же именем, что и имя исходного файла.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copy2('source_file.txt', 'destination_file.txt')

Я использовал этот метод при автоматизации тестирования, поскольку он копирует содержимое файла вместе с большей частью связанных с ним метаданных, так что мы можем программно добиться того же результата, что и копирование и вставка файла с помощью сочетаний клавиш в графическом файловом менеджере, и это также близко повторяет поведение типичной операции копирования и вставки с использованием мыши в графическом файловом менеджере.

3. метод Shutil.copyfile()

shutil.copyfile(source, destination, *, follow_symlinks=True)

При использовании этого метода содержимое файла копируется из источника в пункт назначения без метаданных. Источником и местом назначения должны быть объекты или строки, подобные пути. Путь назначения может указывать только путь к файлу, но не может указывать путь к каталогу.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copyfile('source_file.txt', 'destination_file.txt')

4. метод Shutil.copyfileobj()

shutil.copyfileobj(fsrc, fdst, length)

Этот метод копирует содержимое исходного файлового объекта в целевой файловый объект. Источником и местом назначения должны быть файловые объекты. Он не сохраняет метаданные и не возвращает никакого значения. Необязательный параметр длины указывает целое значение размера буфера.

# Import shell utility module
import shutil

# Create file objects
source_file_object = open("../hello.txt", "r")
destination_file_object = open("CopyFile/copyFalseSrcPath.txt", "w")

# Copy the content of the file object to another file object
shutil.copyfileobj(source_file_object, destination_file_object)

Предотвращение типичных ошибок:

  • Источник и место назначения не могут указывать один и тот же путь в Shutil.copy(), Shutil.copy2() и Shutil.copyfile(). Если источник и место назначения указывают один и тот же путь к файлу, будет выдано исключение «SameFileError». Эта ошибка не возникает в методе Shutil.copyfileobj(), поскольку файл назначения перезаписывается, если он уже существует.
  • Если в источнике указан путь к отсутствующему файлу, возникнет ошибка FileNotFound.

Заключение

Каждый метод обеспечивает различные аспекты файловых операций, обеспечивая гибкость и мощность для удовлетворения различных потребностей тестирования. Модуль Python Shutil предлагает необходимые инструменты для эффективных операций с файлами при тестировании программного обеспечения:

  • Shutil.copy: отлично подходит для базового копирования файлов, включая разрешения.
  • Shutil.copy2: идеально подходит для копирования файлов вместе с большей частью их метаданных, включая временные метки.
  • Shutil.copyfile: лучше всего подходит для быстрого и простого копирования контента без метаданных.
  • Shutil.copyfileobj: обеспечивает точное копирование между файлоподобными объектами.

Некоторые другие часто используемые служебные функции, которые могут быть полезны при автоматизации наших тестов:

  1. Shutil.mkdirs(): рекурсивно создает каталоги. Полезно для настройки структуры каталогов, необходимой для тестирования или организации файлов.
  2. Shutil.copytree(): рекурсивно копирует все дерево каталогов. Идеально подходит для дублирования сложных структур каталогов, включая все файлы и подкаталоги, для создания или резервного копирования сред для тестирования или развертывания.
  3. Shutil.rmtree(): рекурсивно удаляет дерево каталогов. Необходим для очистки после тестов или полного удаления временных каталогов и их содержимого.
  4. Shutil.move(): перемещает файл или каталог в другое место. Эффективно перемещает файлы или каталоги внутри файловой системы, облегчая организацию или процесс развертывания.
  5. Shutil.make_archive(): создает архив (например, AIP или TAR) каталога и его содержимого. Полезно для упаковки каталогов для распространения или резервного копирования.

Больше служебных функций и подробное описание можно найти в официальной документации.

Модуль Shutil в Python служит универсальным набором инструментов не только для тестирования программного обеспечения, но и для различных областей разработки программного обеспечения, таких как контроль версий и развертывание, обработка данных и машинное обучение, ИТ и системное администрирование, исследования и академические круги и многие другие. более.

Интегрируя Shutil в наши процессы тестирования, мы можем выполнять сложные файловые операции с минимальным количеством кода, экономя наше время и усилия и позволяя нам сосредоточиться на разработке высококачественного программного обеспечения.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/jankaritech/pythons-shutil-module-for-automated-testing-413n?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3