В динамичной сфере разработки программного обеспечения жизненно важно обеспечить качество приложений посредством автоматического тестирования. Автоматизированное тестирование включает в себя выполнение многочисленных тестов, требующих определенной настройки файлов и каталогов. Эффективная настройка и демонтаж тестовых сред — важная часть этого процесса, который часто может оказаться утомительной и подверженной ошибкам задачей без подходящих инструментов.
Нахождение подходящих инструментов для упрощения задач может иметь большое значение. Стандартный служебный модуль, известный как Shutil, представляет собой аббревиатуру утилит оболочки. Он обеспечивает файловые операции высокого уровня для копирования, перемещения и удаления файлов и каталогов, которые могут упростить управление тестовыми средами. В этом блоге объясняется, как модуль Shutil может упростить файловые операции при автоматизированном тестировании программного обеспечения.
Чтобы гарантировать, что каждый тест запускается в правильной среде, нам необходимо автоматизировать процесс установки, создав согласованную и изолированную тестовую среду.
Модуль Shutil является частью стандартной библиотеки Python, поэтому нам не нужно устанавливать ничего дополнительно. Просто импортируйте его в начало вашего скрипта.
# Import shell utility module import shutil
При тестировании приложения нам часто требуется определенный набор файлов данных. Вместо копирования файлов вручную четыре распространенных метода обеспечивают простой и эффективный способ копирования файла с помощью модуля Shutil.
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')
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')
Я использовал этот метод при автоматизации тестирования, поскольку он копирует содержимое файла вместе с большей частью связанных с ним метаданных, так что мы можем программно добиться того же результата, что и копирование и вставка файла с помощью сочетаний клавиш в графическом файловом менеджере, и это также близко повторяет поведение типичной операции копирования и вставки с использованием мыши в графическом файловом менеджере.
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')
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)
Каждый метод обеспечивает различные аспекты файловых операций, обеспечивая гибкость и мощность для удовлетворения различных потребностей тестирования. Модуль Python Shutil предлагает необходимые инструменты для эффективных операций с файлами при тестировании программного обеспечения:
Некоторые другие часто используемые служебные функции, которые могут быть полезны при автоматизации наших тестов:
Больше служебных функций и подробное описание можно найти в официальной документации.
Модуль Shutil в Python служит универсальным набором инструментов не только для тестирования программного обеспечения, но и для различных областей разработки программного обеспечения, таких как контроль версий и развертывание, обработка данных и машинное обучение, ИТ и системное администрирование, исследования и академические круги и многие другие. более.
Интегрируя Shutil в наши процессы тестирования, мы можем выполнять сложные файловые операции с минимальным количеством кода, экономя наше время и усилия и позволяя нам сосредоточиться на разработке высококачественного программного обеспечения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3