Maison >développement back-end >Tutoriel Python >Module Shutil de Python pour les tests automatisés

Module Shutil de Python pour les tests automatisés

王林
王林original
2024-08-21 15:41:38399parcourir

Python

Introduction

Dans le domaine dynamique du développement logiciel, garantir la qualité des applications grâce à des tests automatisés est vital. Les tests automatisés impliquent l'exécution de nombreux tests qui nécessitent une configuration spécifique de fichiers et de répertoires. La configuration et la suppression efficaces des environnements de test constituent une partie importante de ce processus qui peut souvent être une tâche fastidieuse et sujette aux erreurs sans les bons outils.

Trouver les bons outils pour simplifier les tâches peut faire une grande différence. Le module utilitaire standard connu sous le nom deshul est une abréviation d'utilitaires shell. Il fournit des opérations de fichiers de haut niveau pour copier, déplacer et supprimer des fichiers et des répertoires qui peuvent simplifier la gestion des environnements de test. Ce blog explique comment le module Shutil peut rationaliser les opérations sur les fichiers lors des tests de logiciels automatisés.

Pour garantir que chaque test démarre avec le bon environnement, nous devons automatiser le processus de configuration, en créant un environnement de test cohérent et isolé.

Débuter avec Shutil

Le module Shutil fait partie de la bibliothèque standard Python, nous n'avons donc pas besoin d'installer quoi que ce soit de plus. Importez-le simplement au début de votre script.

# Import shell utility module
import shutil

Méthodes essentielles de copie de fichiers

Lors du test d'une application, nous avons souvent besoin d'un ensemble spécifique de fichiers de données. Au lieu de copier manuellement des fichiers, quatre méthodes courantes offrent un moyen simple et efficace de copier un fichier à l'aide du module Shutil.

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

1. Méthode shutdown.copy()

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

Cette méthode copie le fichier source dans le répertoire ou le fichier spécifié dans la destination et renvoie la destination du fichier. Il copie les données du fichier et le mode d'autorisation du fichier, mais les métadonnées (heure de création et de modification du fichier) du fichier copié ne sont pas conservées. La source et la destination doivent être des objets ou des chaînes ressemblant à un chemin. La destination peut spécifier à la fois un fichier ou un répertoire. Si la destination spécifie un chemin vers un répertoire, le fichier sera copié dans le répertoire de destination avec le nom de fichier du chemin source.
Tout en travaillant avec un lien symbolique :

  • Si follow_symlinks=True, la destination sera une copie du fichier vers lequel pointe le lien symbolique dans la source. La valeur par défaut du paramètre follow_symlinks est True.

  • Si follow_symlinks=False, la destination sera créée sous forme de lien symbolique.

# 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éthode shutdown.copy2()

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

La méthodeshutil.copy2() fournit la fonctionnalité supplémentaire de préserver toutes les métadonnées du fichier qu'elle peut. Les autres caractéristiques sont les mêmes que pour la méthodeshutil.copy(). La destination peut spécifier à la fois un fichier ou un répertoire. Si la destination est un répertoire, le fichier sera copié avec le même nom que le nom du fichier source.

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

J'ai utilisé cette méthode lors de l'automatisation du test car elle copie le contenu du fichier avec la plupart de ses métadonnées associées afin que nous puissions obtenir par programme le même résultat que copier et coller un fichier à l'aide de raccourcis clavier dans un gestionnaire de fichiers graphique et cela également de près reproduit le comportement d'une opération de copier-coller typique à l'aide d'une souris dans un gestionnaire de fichiers graphique.

3. Méthode shutdown.copyfile()

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

En utilisant cette méthode, le contenu d'un fichier est copié de sa source vers sa destination sans métadonnées. La source et la destination doivent être des objets ou des chaînes ressemblant à un chemin. Le chemin de destination peut uniquement spécifier un chemin vers un fichier mais ne peut pas spécifier un chemin vers un répertoire.

# 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éthode shutdown.copyfileobj()

shutil.copyfileobj(fsrc, fdst, length)

Cette méthode copie le contenu de l'objet fichier source vers l'objet fichier de destination. La source et la destination doivent être des objets de type fichier. Il ne conserve pas les métadonnées et ne renvoie aucune valeur. Le paramètre facultatif de longueur spécifie une valeur entière pour la taille du tampon.

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

Prévenir les erreurs courantes :

  • La source et la destination ne peuvent pas spécifier le même chemin dans Shutil.copy(), Shutil.copy2() et Shutil.copyfile(). Si la source et la destination spécifient le même chemin de fichier, l'exception "SameFileError" sera levée. Cette erreur n'est pas générée dansshutil.copyfileobj() car elle écrase le fichier de destination s'il existe déjà.
  • Une erreur "FileNotFound" sera générée si la source spécifie un chemin d'accès à un fichier qui n'est pas présent.

Conclusion

Chaque méthode fournit différents aspects des opérations sur les fichiers, offrant la flexibilité et la puissance nécessaires pour répondre à divers besoins de test. Le module Shutil de Python offre des outils essentiels pour des opérations de fichiers efficaces dans les tests logiciels :

  • Shutil.copy : Idéal pour la copie de fichiers de base, y compris les autorisations.
  • Shutil.copy2 : Idéal pour copier des fichiers avec la plupart de leurs métadonnées, y compris les horodatages.
  • shul.copyfile : idéal pour une copie de contenu simple et rapide sans métadonnées.
  • shutdown.copyfileobj : permet une copie précise entre des objets de type fichier.

Certaines autres fonctions utilitaires couramment utilisées qui peuvent être utiles lors de l'automatisation de nos tests sont :

  1. shutdown.mkdirs() : crée des répertoires de manière récursive. Utile pour configurer les structures de répertoires nécessaires au test ou à l'organisation des fichiers.
  2. shutil.copytree() : copie récursivement une arborescence de répertoires entière. Idéal pour dupliquer des structures de répertoires complexes, y compris tous les fichiers et sous-répertoires, afin de créer ou de sauvegarder des environnements à des fins de test ou de déploiement.
  3. shutil.rmtree() : supprime une arborescence de répertoires de manière récursive. Indispensable pour nettoyer après les tests ou supprimer complètement les répertoires temporaires et leur contenu.
  4. shutdown.move() : déplace un fichier ou un répertoire vers un autre emplacement. Déplace efficacement les fichiers ou les répertoires au sein du système de fichiers, facilitant ainsi le processus d'organisation ou de déploiement.
  5. shutil.make_archive() : crée une archive (telle que AIP ou TAR) d'un répertoire et de son contenu. Utile pour empaqueter des répertoires à des fins de distribution ou de sauvegarde.

Plus de fonctions utilitaires et des descriptions détaillées peuvent être trouvées dans la documentation officielle.

Le module Shutil en Python sert d'ensemble d'outils polyvalent non seulement pour les tests de logiciels, mais également dans divers domaines du développement de logiciels tels que le contrôle et le déploiement de versions, la science des données et l'apprentissage automatique, l'administration informatique et système, la recherche et le monde universitaire, et bien d'autres. plus.

En intégrant Shutil dans nos processus de test, nous pouvons effectuer des opérations de fichiers complexes avec un minimum de code, ce qui nous permet d'économiser du temps et des efforts et de nous concentrer sur le développement de logiciels de haute qualité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn