„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Pythons Shutil-Modul für automatisiertes Testen

Pythons Shutil-Modul für automatisiertes Testen

Veröffentlicht am 27.08.2024
Durchsuche:992

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 erstellen.

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 Methode „shutil.copy2()“ 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, aber keinen Pfad zu einem Verzeichnis angeben.

# 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 können 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 dadurch die Zieldatei überschrieben wird, falls diese bereits vorhanden ist.
  • Der 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 wesentliche Werkzeuge 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 erforderlich sind.
  2. Shutil.copytree(): Kopiert rekursiv einen gesamten Verzeichnisbaum. Ideal zum Duplizieren komplexer Verzeichnisstrukturen, einschließlich aller Dateien und Unterverzeichnisse, um Umgebungen für Tests oder Bereitstellungen 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 Systemverwaltung, Forschung und Wissenschaft und vielen mehr mehr.

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

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/jankaritech/pythons-shutil-module-for-automated-testing-413n?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3