「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 自動テスト用の Python の shutil モジュール

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

2024 年 8 月 27 日に公開
ブラウズ:897

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

リリースステートメント この記事は、https://dev.to/jankaritech/pythons-shutil-module-for- automated-testing-413n?1に再現されています。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3