Rumah >pembangunan bahagian belakang >Tutorial Python >Modul shutil Python untuk Ujian Automatik

Modul shutil Python untuk Ujian Automatik

王林
王林asal
2024-08-21 15:41:38395semak imbas

Python

pengenalan

Dalam domain dinamik pembangunan perisian, memastikan kualiti aplikasi melalui ujian automatik adalah penting. Ujian automatik melibatkan menjalankan banyak ujian yang memerlukan persediaan khusus fail dan direktori. Menyediakan dan meruntuhkan persekitaran ujian dengan cekap ialah bahagian penting dalam proses ini yang selalunya boleh menjadi tugas yang membosankan dan mudah ralat tanpa alat yang betul.

Mencari alatan yang betul untuk memudahkan tugasan boleh membuat perbezaan yang besar. Modul utiliti standard yang dikenali sebagai shutil ialah singkatan untuk utiliti shell. Ia menyediakan operasi fail peringkat tinggi untuk menyalin, mengalih dan mengalih keluar fail dan direktori yang boleh memudahkan pengurusan persekitaran ujian. Blog ini menerangkan cara modul shutil boleh menyelaraskan operasi fail dalam ujian perisian automatik.

Untuk memastikan setiap ujian bermula dengan persekitaran yang betul, kami perlu mengautomasikan proses persediaan, mewujudkan persekitaran ujian yang konsisten dan terpencil.

Bermula dengan shutil

Modul Shutil adalah sebahagian daripada Pustaka Standard Python, jadi kami tidak perlu memasang apa-apa tambahan. Hanya importnya pada permulaan skrip anda.

# Import shell utility module
import shutil

Kaedah penyalinan fail penting

Semasa menguji aplikasi, kami sering memerlukan set fail data tertentu. Daripada menyalin fail secara manual, empat kaedah biasa menyediakan cara yang mudah dan cekap untuk menyalin fail menggunakan modul shutil.

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

1. kaedah shutil.copy().

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

Kaedah ini menyalin fail sumber ke direktori atau fail yang ditentukan dalam destinasi dan mengembalikan destinasi fail. Ia menyalin data fail dan mod kebenaran fail tetapi metadata (masa penciptaan dan pengubahsuaian fail) bagi fail yang disalin tidak disimpan. Sumber dan destinasi mestilah objek atau rentetan seperti laluan. Destinasi boleh menentukan kedua-dua fail atau direktori. Jika destinasi menentukan laluan ke direktori, fail akan disalin ke direktori destinasi dengan nama fail laluan sumber.
Semasa bekerja dengan pautan simbolik:

  • Jika follow_symlinks=Benar, destinasi akan menjadi salinan fail yang dituju oleh pautan simbolik dalam sumber. Nilai lalai parameter follow_symlinks ialah Benar.

  • Jika follow_symlinks=Salah, destinasi akan dibuat sebagai pautan simbolik.

# 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. kaedah shutil.copy2().

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

Kaedah shutil.copy2() menyediakan fungsi tambahan untuk mengekalkan semua metadata fail yang boleh dilakukan. Ciri-ciri lain adalah sama seperti kaedah shutil.copy(). Destinasi boleh menentukan kedua-dua fail atau direktori. Jika destinasi ialah direktori, fail akan disalin dengan nama yang sama dengan nama fail sumber.

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

Saya menggunakan kaedah ini semasa mengautomasikan ujian kerana ia menyalin kandungan fail bersama-sama dengan kebanyakan metadata yang berkaitan supaya kami boleh mencapai hasil yang sama secara pemrograman seperti menyalin dan menampal fail menggunakan pintasan papan kekunci dalam pengurus fail grafik dan ia juga rapat mereplikasi gelagat operasi salin dan tampal biasa menggunakan tetikus dalam pengurus fail grafik.

3. kaedah shutil.copyfile().

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

Menggunakan kaedah ini, kandungan fail disalin daripada sumbernya ke destinasinya tanpa metadata. Sumber dan destinasi mestilah objek atau rentetan seperti laluan. Laluan destinasi hanya boleh menentukan laluan ke fail tetapi tidak boleh menentukan laluan ke direktori.

# 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. kaedah shutil.copyfileobj().

shutil.copyfileobj(fsrc, fdst, length)

Kaedah ini menyalin kandungan objek fail sumber ke objek fail destinasi. Sumber dan destinasi mestilah objek seperti fail. Ia tidak mengekalkan metadata dan tidak mengembalikan sebarang nilai. Parameter panjang pilihan menentukan nilai integer untuk saiz penimbal.

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

Mencegah kesilapan biasa:

  • Sumber dan destinasi tidak boleh menentukan laluan yang sama dalam shutil.copy(), shutil.copy2() dan shutil.copyfile(). Jika sumber dan destinasi menentukan laluan fail yang sama maka pengecualian "SameFileError" akan dinaikkan. Ralat ini tidak dibangkitkan dalam shutil.copyfileobj() kerana ia menimpa fail destinasi jika ia sudah wujud.
  • Ralat "FileNotFound" akan dibangkitkan jika sumber menentukan laluan ke fail yang tiada.

Kesimpulan

Setiap kaedah menyediakan aspek operasi fail yang berbeza, memberikan fleksibiliti dan kuasa untuk memenuhi pelbagai keperluan ujian. Modul shutil Python menawarkan alat penting untuk operasi fail yang cekap dalam ujian perisian:

  • shutil.copy: Bagus untuk penyalinan fail asas, termasuk kebenaran.
  • shutil.copy2: Sesuai untuk menyalin fail bersama kebanyakan metadata mereka, termasuk cap masa.
  • shutil.copyfile: Terbaik untuk penyalinan kandungan yang pantas dan ringkas tanpa metadata.
  • shutil.copyfileobj: Membolehkan penyalinan tepat antara objek seperti fail.

Beberapa fungsi utiliti lain yang biasa digunakan yang boleh membantu semasa mengautomasikan ujian kami ialah:

  1. shutil.mkdirs(): Mencipta direktori secara rekursif. Berguna untuk menyediakan struktur direktori yang diperlukan untuk menguji atau menyusun fail.
  2. shutil.copytree(): Menyalin keseluruhan pepohon direktori secara rekursif. Sesuai untuk menduplikasi struktur direktori yang kompleks, termasuk semua fail dan sub-direktori, untuk mencipta atau menyandarkan persekitaran untuk ujian atau penggunaan.
  3. shutil.rmtree(): Memadamkan pepohon direktori secara rekursif. Penting untuk membersihkan selepas ujian atau mengalih keluar direktori sementara dan kandungannya sepenuhnya.
  4. shutil.move(): Memindahkan fail atau direktori ke lokasi lain. Memindahkan fail atau direktori dengan cekap dalam sistem fail, memudahkan organisasi atau proses penempatan.
  5. shutil.make_archive(): Mencipta arkib (seperti AIP atau TAR) direktori dan kandungannya. Berguna untuk direktori pembungkusan untuk tujuan pengedaran atau sandaran.

Lebih banyak fungsi utiliti dan penerangan terperinci boleh didapati dalam dokumentasi rasmi.

Modul shutil dalam Python berfungsi sebagai set alat serba boleh bukan sahaja dalam ujian perisian tetapi juga merentasi pelbagai bidang pembangunan perisian seperti kawalan versi dan penggunaan, sains data dan pembelajaran mesin, IT dan pentadbiran sistem, penyelidikan dan akademik, dan banyak lagi. lagi.

Mengintegrasikan shutil ke dalam proses ujian kami, kami boleh melaksanakan operasi fail yang kompleks dengan kod minimum, menjimatkan masa dan usaha kami serta membolehkan kami menumpukan pada pembangunan perisian berkualiti tinggi.

Atas ialah kandungan terperinci Modul shutil Python untuk Ujian Automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn