Heim  >  Artikel  >  Backend-Entwicklung  >  Pythons Shutil-Modul für automatisiertes Testen

Pythons Shutil-Modul für automatisiertes Testen

王林
王林Original
2024-08-21 15:41:38285Durchsuche

Python

Einführung

Im dynamischen Bereich der Softwareentwicklung ist die Sicherstellung der Anwendungsqualität durch automatisierte Tests von entscheidender Bedeutung. Beim automatisierten Testen werden zahlreiche Tests ausgeführt, die eine spezifische Einrichtung von Dateien und Verzeichnissen erfordern. Das effiziente Auf- und Abbauen von Testumgebungen ist ein wesentlicher Teil dieses Prozesses, der ohne die richtigen Tools oft eine mühsame und fehleranfällige Aufgabe sein kann.

Die richtigen Tools zur Vereinfachung von Aufgaben zu finden, kann einen großen Unterschied machen. Das als Shutil bekannte Standard-Dienstprogrammmodul ist eine Abkürzung für Shell-Dienstprogramme. Es bietet hochrangige Dateioperationen zum Kopieren, Verschieben und Entfernen von Dateien und Verzeichnissen, die die Verwaltung von Testumgebungen vereinfachen können. In diesem Blog wird erklärt, wie das Shutil-Modul Dateivorgänge beim automatisierten Softwaretesten optimieren kann.

Um sicherzustellen, dass jeder Test mit der richtigen Umgebung beginnt, müssen wir den Einrichtungsprozess automatisieren und eine konsistente und isolierte Testumgebung schaffen.

Erste Schritte mit Shutil

Das Shutil-Modul ist Teil der Python-Standardbibliothek, daher müssen wir nichts extra installieren. Importieren Sie es einfach am Anfang Ihres Skripts.

# Import shell utility module
import shutil

Grundlegende Methoden zum Kopieren von Dateien

Beim Testen einer Anwendung benötigen wir häufig einen bestimmten Satz von Datendateien. Anstatt Dateien manuell zu kopieren, bieten vier gängige Methoden eine einfache und effiziente Möglichkeit, eine Datei mithilfe des Shutil-Moduls zu kopieren.

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

1. Shutil.copy()-Methode

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

Diese Methode kopiert die Quelldatei in das im Ziel angegebene Verzeichnis oder die Datei und gibt das Ziel der Datei zurück. Es kopiert die Daten der Datei und den Berechtigungsmodus der Datei, Metadaten (Erstellungs- und Änderungszeitpunkt der Datei) der kopierten Datei bleiben jedoch nicht erhalten. Quelle und Ziel sollten pfadähnliche Objekte oder Zeichenfolgen sein. Das Ziel kann sowohl eine Datei als auch ein Verzeichnis angeben. Wenn das Ziel einen Pfad zu einem Verzeichnis angibt, wird die Datei mit dem Dateinamen des Quellpfads in das Zielverzeichnis kopiert.
Beim Arbeiten mit symbolischem Link:

  • Wenn follow_symlinks=True, ist das Ziel eine Kopie der Datei, auf die der symbolische Link in der Quelle verweist. Der Standardwert des Parameters follow_symlinks ist True.

  • Wenn follow_symlinks=False, wird das Ziel als symbolischer Link erstellt.

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

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

Die Shutil.copy2()-Methode bietet die zusätzliche Funktionalität, alle Metadaten der Datei beizubehalten. Andere Eigenschaften sind dieselben wie für die Methode „shutil.copy()“. Das Ziel kann sowohl eine Datei als auch ein Verzeichnis angeben. Wenn das Ziel ein Verzeichnis ist, wird die Datei mit demselben Namen wie der Quelldateiname kopiert.

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

Ich habe diese Methode bei der Testautomatisierung verwendet, da sie den Dateiinhalt zusammen mit den meisten zugehörigen Metadaten kopiert, sodass wir programmgesteuert das gleiche Ergebnis erzielen können wie das Kopieren und Einfügen einer Datei mithilfe von Tastaturkürzeln in einem grafischen Dateimanager und es auch genau repliziert das Verhalten eines typischen Kopier- und Einfügevorgangs mit der Maus im grafischen Dateimanager.

3. Shutil.copyfile()-Methode

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

Mit dieser Methode wird der Inhalt einer Datei ohne Metadaten von der Quelle zum Ziel kopiert. Quelle und Ziel sollten pfadähnliche Objekte oder Zeichenfolgen sein. Der Zielpfad kann nur einen Pfad zu einer Datei angeben, aber keinen Pfad zu einem Verzeichnis.

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

shutil.copyfileobj(fsrc, fdst, length)

Diese Methode kopiert den Inhalt des Quelldateiobjekts in das Zieldateiobjekt. Quelle und Ziel müssen dateiähnliche Objekte sein. Es behält keine Metadaten bei und gibt keinen Wert zurück. Der optionale Längenparameter gibt einen ganzzahligen Wert für die Puffergröße an.

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

Häufige Fehler vermeiden:

  • Quelle und Ziel dürfen in „shutil.copy()“, „shutil.copy2()“ und „shutil.copyfile()“ nicht denselben Pfad angeben. Wenn Quelle und Ziel denselben Dateipfad angeben, wird die Ausnahme „SameFileError“ ausgelöst. Dieser Fehler wird in Shutil.copyfileobj() nicht ausgelöst, da die Zieldatei überschrieben wird, falls sie bereits vorhanden ist.
  • Ein Fehler „FileNotFound“ wird ausgelöst, wenn die Quelle einen Pfad zu einer Datei angibt, die nicht vorhanden ist.

Abschluss

Jede Methode bietet unterschiedliche Aspekte von Dateivorgängen und bietet so Flexibilität und Leistung, um verschiedene Testanforderungen zu erfüllen. Das Shutil-Modul von Python bietet wichtige Tools für effiziente Dateioperationen beim Softwaretest:

  • Shutil.copy: Ideal für das einfache Kopieren von Dateien, einschließlich Berechtigungen.
  • Shutil.copy2: Ideal zum Kopieren von Dateien zusammen mit den meisten ihrer Metadaten, einschließlich Zeitstempeln.
  • Shutil.copyfile: Am besten für schnelles, einfaches Kopieren von Inhalten ohne Metadaten.
  • Shutil.copyfileobj: Ermöglicht präzises Kopieren zwischen dateiähnlichen Objekten.

Einige andere häufig verwendete Hilfsfunktionen, die bei der Automatisierung unserer Tests hilfreich sein können, sind:

  1. Shutil.mkdirs(): Erstellt Verzeichnisse rekursiv. Nützlich zum Einrichten von Verzeichnisstrukturen, die zum Testen oder Organisieren von Dateien benötigt werden.
  2. Shutil.copytree(): Kopiert rekursiv einen gesamten Verzeichnisbaum. Ideal zum Duplizieren komplexer Verzeichnisstrukturen, einschließlich aller Dateien und Unterverzeichnisse, um Umgebungen zum Testen oder zur Bereitstellung zu erstellen oder zu sichern.
  3. Shutil.rmtree(): Löscht einen Verzeichnisbaum rekursiv. Unverzichtbar zum Aufräumen nach Tests oder zum vollständigen Entfernen temporärer Verzeichnisse und deren Inhalte.
  4. Shutil.move(): Verschiebt eine Datei oder ein Verzeichnis an einen anderen Ort. Verlagert Dateien oder Verzeichnisse effizient innerhalb des Dateisystems und erleichtert so die Organisation oder den Bereitstellungsprozess.
  5. Shutil.make_archive(): Erstellt ein Archiv (z. B. AIP oder TAR) eines Verzeichnisses und seines Inhalts. Nützlich zum Packen von Verzeichnissen für Verteilungen oder Sicherungszwecke.

Weitere Hilfsfunktionen und detaillierte Beschreibungen finden Sie in der offiziellen Dokumentation.

Das Shutil-Modul in Python dient als vielseitiges Toolset nicht nur beim Softwaretesten, sondern auch in verschiedenen Bereichen der Softwareentwicklung wie Versionskontrolle und -bereitstellung, Datenwissenschaft und maschinelles Lernen, IT- und Systemadministration, Forschung und Wissenschaft und vielen mehr mehr.

Durch die Integration von Shutil in unsere Testprozesse können wir komplexe Dateioperationen mit minimalem Code durchführen, was Zeit und Mühe spart und es uns ermöglicht, uns auf die Entwicklung hochwertiger Software zu konzentrieren.

Das obige ist der detaillierte Inhalt vonPythons Shutil-Modul für automatisiertes Testen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn