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.
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
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.
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')
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.
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')
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)
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:
Einige andere häufig verwendete Hilfsfunktionen, die bei der Automatisierung unserer Tests hilfreich sein können, sind:
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.
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