"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Módulo Shutil de Python para pruebas automatizadas

Módulo Shutil de Python para pruebas automatizadas

Publicado el 2024-08-27
Navegar:210

Python

Introducción

En el dominio dinámico del desarrollo de software, garantizar la calidad de las aplicaciones mediante pruebas automatizadas es vital. Las pruebas automatizadas implican la ejecución de numerosas pruebas que requieren una configuración específica de archivos y directorios. Configurar y desmantelar entornos de prueba de manera eficiente es una parte importante de este proceso que a menudo puede ser una tarea tediosa y propensa a errores sin las herramientas adecuadas.

Encontrar las herramientas adecuadas para simplificar las tareas puede marcar una gran diferencia. El módulo de utilidades estándar conocido como Shutil es una abreviatura de utilidades de shell. Proporciona operaciones de archivos de alto nivel para copiar, mover y eliminar archivos y directorios que pueden simplificar la gestión de entornos de prueba. Este blog explica cómo el módulo Shutil puede optimizar las operaciones de archivos en pruebas de software automatizadas.

Para garantizar que cada prueba comience con el entorno correcto, necesitamos automatizar el proceso de configuración, creando un entorno de prueba consistente y aislado.

Empezando con Shuil

El módulo Shutil es parte de la biblioteca estándar de Python, por lo que no necesitamos instalar nada adicional. Simplemente impórtalo al principio de tu script.

# Import shell utility module
import shutil

Métodos esenciales para copiar archivos

Al probar una aplicación, a menudo necesitamos un conjunto específico de archivos de datos. En lugar de copiar archivos manualmente, cuatro métodos comunes brindan una manera fácil y eficiente de copiar un archivo usando el módulo Shutil.

  1. shutil.copia()
  2. shutil.copia2()
  3. shutil.copyfile()
  4. shutil.copyfileobj()

1. método Shutil.copy()

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

Este método copia el archivo de origen al directorio o archivo especificado en el destino y devuelve el destino del archivo. Copia los datos del archivo y el modo de permiso del archivo, pero los metadatos (hora de creación y modificación del archivo) del archivo copiado no se conservan. El origen y el destino deben ser cadenas o objetos similares a rutas. El destino puede especificar tanto un archivo como un directorio. Si el destino especifica una ruta a un directorio, el archivo se copiará al directorio de destino con el nombre de archivo de la ruta de origen.
Mientras trabaja con enlace simbólico:

  • Si follow_symlinks=True, el destino será una copia del archivo al que apunta el enlace simbólico en el origen. El valor predeterminado del parámetro follow_symlinks es Verdadero.

  • Si follow_symlinks=False, el destino se creará como un enlace simbólico.

# 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. métodoshutil.copy2()

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

El métodoshutil.copy2() proporciona la funcionalidad adicional de preservar todos los metadatos del archivo que pueda. Otras características son las mismas que para el método Shutil.copy(). El destino puede especificar tanto un archivo como un directorio. Si el destino es un directorio, el archivo se copiará con el mismo nombre que el nombre del archivo de origen.

# 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')

Utilicé este método mientras automatizaba la prueba, ya que copia el contenido del archivo junto con la mayoría de sus metadatos asociados para que podamos lograr mediante programación el mismo resultado que copiar y pegar un archivo usando atajos de teclado en un administrador de archivos gráfico y también de cerca. replica el comportamiento de una operación típica de copiar y pegar usando un mouse en el administrador de archivos gráfico.

3. métodoshutil.copyfile()

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

Con este método, el contenido de un archivo se copia desde su origen a su destino sin metadatos. El origen y el destino deben ser cadenas o objetos similares a rutas. La ruta de destino solo puede especificar una ruta a un archivo, pero no puede especificar una ruta a un directorio.

# 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. métodoshutil.copyfileobj()

shutil.copyfileobj(fsrc, fdst, length)

Este método copia el contenido del objeto del archivo de origen al objeto del archivo de destino. El origen y el destino deben ser objetos similares a archivos. No conserva metadatos y no devuelve ningún valor. El parámetro de longitud opcional especifica un valor entero para el tamaño del búfer.

# 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)

Previniendo errores comunes:

  • El origen y el destino no pueden especificar la misma ruta en Shutil.copy(), Shutil.copy2() y Shutil.copyfile(). Si el origen y el destino especifican la misma ruta de archivo, se generará la excepción "SameFileError". Este error no aparece en Shutil.copyfileobj() ya que sobrescribe el archivo de destino si ya existe.
  • Se generará un error "FileNotFound" si la fuente especifica una ruta a un archivo que no está presente.

Conclusión

Cada método proporciona diferentes aspectos de las operaciones de archivos, brindando flexibilidad y potencia para satisfacer diversas necesidades de prueba. El módulo Shutil de Python ofrece herramientas esenciales para operaciones eficientes con archivos en pruebas de software:

  • Shutil.copy: excelente para copiar archivos básicos, incluidos los permisos.
  • Shutil.copy2: Ideal para copiar archivos junto con la mayoría de sus metadatos, incluidas las marcas de tiempo.
  • Shutil.copyfile: lo mejor para copiar contenido de forma rápida y sencilla sin metadatos.
  • Shutil.copyfileobj: permite la copia precisa entre objetos similares a archivos.

Algunas otras funciones de utilidad comúnmente utilizadas que pueden ser útiles al automatizar nuestras pruebas son:

  1. Shutil.mkdirs(): Crea directorios de forma recursiva. Útil para configurar estructuras de directorios necesarias para probar u organizar archivos.
  2. Shutil.copytree(): Copia recursivamente un árbol de directorios completo. Ideal para duplicar estructuras de directorios complejas, incluidos todos los archivos y subdirectorios, para crear o realizar copias de seguridad de entornos para pruebas o implementación.
  3. Shutil.rmtree(): elimina un árbol de directorios de forma recursiva. Esencial para limpiar después de las pruebas o eliminar directorios temporales y su contenido por completo.
  4. Shutil.move(): Mueve un archivo o directorio a otra ubicación. Reubica eficientemente archivos o directorios dentro del sistema de archivos, facilitando la organización o el proceso de implementación.
  5. Shutil.make_archive(): Crea un archivo (como AIP o TAR) de un directorio y su contenido. Útil para empaquetar directorios con fines de distribución o respaldo.

Puedes encontrar más funciones de utilidad y descripciones detalladas en la documentación oficial.

El módulo Shutil en Python sirve como un conjunto de herramientas versátil no solo en pruebas de software sino también en diversos campos del desarrollo de software, como control e implementación de versiones, ciencia de datos y aprendizaje automático, administración de sistemas y TI, investigación y academia, y muchos más. más.

Al integrar Shutil en nuestros procesos de prueba, podemos realizar operaciones de archivos complejas con un código mínimo, lo que nos ahorra tiempo y esfuerzo y nos permite centrarnos en desarrollar software de alta calidad.

Declaración de liberación Este artículo se reproduce en: https://dev.to/jankaritech/pythons-shutil-module-for-automated-testing-413n?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3