ホームページ >バックエンド開発 >Python チュートリアル >自動テスト用の Python の shutil モジュール

自動テスト用の Python の shutil モジュール

王林
王林オリジナル
2024-08-21 15:41:38393ブラウズ

Python

導入

ソフトウェア開発の動的な領域では、自動テストを通じてアプリケーションの品質を確保することが不可欠です。自動テストには、ファイルとディレクトリの特定のセットアップを必要とする多数のテストの実行が含まれます。テスト環境の効率的なセットアップと破棄は、このプロセスの重要な部分であり、適切なツールがないと退屈でエラーが発生しやすい作業になることがよくあります。

タスクを簡素化する適切なツールを見つけると、大きな違いが生まれます。 shutil として知られる標準ユーティリティ モジュールは、シェル ユーティリティの略語です。ファイルやディレクトリをコピー、移動、削除するための高レベルのファイル操作を提供し、テスト環境の管理を簡素化します。このブログでは、shutil モジュールが自動ソフトウェア テストでファイル操作を効率化する方法について説明します。

各テストが正しい環境で確実に開始されるようにするには、セットアップ プロセスを自動化し、一貫性のある分離されたテスト環境を作成する必要があります。

Shutil を始める

Shutil モジュールは Python 標準ライブラリの一部であるため、追加のものをインストールする必要はありません。スクリプトの先頭にインポートするだけです。

# Import shell utility module
import shutil

基本的なファイルのコピー方法

アプリケーションのテスト中に、特定のデータ ファイルのセットが必要になることがよくあります。ファイルを手動でコピーする代わりに、shutil モジュールを使用してファイルをコピーするための 4 つの一般的な方法が簡単かつ効率的に提供されます。

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

1. shutil.copy() メソッド

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

このメソッドは、コピー元のファイルをコピー先に指定されたディレクトリまたはファイルにコピーし、ファイルのコピー先を返します。ファイルのデータとファイルのアクセス許可モードはコピーされますが、コピーされたファイルのメタデータ (ファイルの作成時間と変更時間) は保持されません。ソースと宛先はパスのようなオブジェクトまたは文字列である必要があります。宛先にはファイルまたはディレクトリの両方を指定できます。宛先にディレクトリへのパスが指定されている場合、ファイルはソース パスのファイル名で宛先ディレクトリにコピーされます。
シンボリック リンクを使用する場合:

  • follow_symlinks=True の場合、宛先はソースのシンボリック リンクが指すファイルのコピーになります。パラメータ follow_symlinks のデフォルト値は True です。

  • follow_symlinks=False の場合、宛先はシンボリック リンクとして作成されます。

# 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() メソッド

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

shutil.copy2() メソッドは、可能な限りファイルのすべてのメタデータを保存する追加機能を提供します。その他の特性は shutil.copy() メソッドと同じです。宛先にはファイルまたはディレクトリの両方を指定できます。宛先がディレクトリの場合、ファイルはコピー元のファイル名と同じ名前でコピーされます。

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

私はテストを自動化する際にこのメソッドを使用しました。このメソッドは、ファイルの内容と関連するメタデータのほとんどをコピーするため、グラフィカル ファイル マネージャーでキーボード ショートカットを使用してファイルをコピー アンド ペーストするのと同じ結果をプログラムで達成でき、また、それとほぼ同じ結果を得ることができます。グラフィカル ファイル マネージャーでマウスを使用した一般的なコピー アンド ペースト操作の動作を再現します。

3. shutil.copyfile() メソッド

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

このメソッドを使用すると、ファイルのコンテンツはメタデータなしでソースから宛先にコピーされます。ソースと宛先はパスのようなオブジェクトまたは文字列である必要があります。宛先パスではファイルへのパスのみを指定できますが、ディレクトリへのパスは指定できません。

# 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() メソッド

shutil.copyfileobj(fsrc, fdst, length)

このメソッドは、ソース ファイル オブジェクトの内容を宛先ファイル オブジェクトにコピーします。ソースと宛先はファイルのようなオブジェクトである必要があります。メタデータは保持されず、値も返されません。オプションの長さパラメータは、バッファ サイズの整数値を指定します。

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

よくある間違いを防ぐ:

  • shutil.copy()、shutil.copy2()、shutil.copyfile() では、送信元と宛先で同じパスを指定できません。ソースと宛先で同じファイル パスが指定されている場合、例外「SameFileError」が発生します。 shutil.copyfileobj() では、宛先ファイルが既に存在する場合は上書きされるため、このエラーは発生しません。
  • ソースに存在しないファイルへのパスが指定されている場合、エラー「FileNotFound」が発生します。

結論

各メソッドはファイル操作のさまざまな側面を提供し、さまざまなテストのニーズを満たす柔軟性と能力を提供します。 Python の shutil モジュールは、ソフトウェア テストにおける効率的なファイル操作に不可欠なツールを提供します。

  • shutil.copy: 権限を含む基本的なファイルのコピーに最適です。
  • shutil.copy2: タイムスタンプを含むほとんどのメタデータとともにファイルをコピーするのに最適です。
  • shutil.copyfile: メタデータを使用せずに、高速でシンプルなコンテンツのコピーに最適です。
  • shutil.copyfileobj: ファイルのようなオブジェクト間の正確なコピーを可能にします。

テストを自動化する際に役立つ、その他の一般的に使用されるユーティリティ関数は次のとおりです。

  1. shutil.mkdirs(): ディレクトリを再帰的に作成します。ファイルのテストや整理に必要なディレクトリ構造を設定するのに役立ちます。
  2. shutil.copytree(): ディレクトリ ツリー全体を再帰的にコピーします。すべてのファイルとサブディレクトリを含む複雑なディレクトリ構造を複製して、テストまたは展開用の環境を作成またはバックアップするのに最適です。
  3. shutil.rmtree(): ディレクトリツリーを再帰的に削除します。テスト後のクリーンアップや一時ディレクトリとその内容を完全に削除する場合に不可欠です。
  4. shutil.move(): ファイルまたはディレクトリを別の場所に移動します。ファイルシステム内のファイルまたはディレクトリを効率的に再配置し、編成または展開プロセスを容易にします。
  5. shutil.make_archive(): ディレクトリとその内容のアーカイブ (AIP や TAR など) を作成します。配布またはバックアップの目的でディレクトリをパッケージ化するのに役立ちます。

その他のユーティリティ関数と詳細な説明は、公式ドキュメントに記載されています。

Python の shutil モジュールは、ソフトウェア テストだけでなく、バ​​ージョン管理と展開、データ サイエンスと機械学習、IT とシステム管理、研究と学術など、ソフトウェア開発のさまざまな分野にわたって多用途のツールセットとして機能します。詳細

Shutil をテスト プロセスに統合することで、最小限のコードで複雑なファイル操作を実行できるため、時間と労力が節約され、高品質のソフトウェアの開発に集中できるようになります。

以上が自動テスト用の Python の shutil モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。