20

テスト環境のセットアップについての質問です。

私のプロジェクトには、テスト データ ファイルにアクセスする単体テストがいくつかあります。これらの単体テストは、テスト ランナーを介してプロジェクト ディレクトリから実行できます。または、たとえばデバッグ目的で、各テスト ファイル/モジュールを個別に実行することもできます。

問題は、テストを実行する場所によって、現在のディレクトリが異なることです。そのため、以下のように、現在のディレクトリからの相対パスを指定してテスト データ ファイルを開くことは、テスト データ ファイルがそのディレクトリにないため、これらのファイルがプロジェクト ディレクトリから実行されている場合には機能しません。

f = open('test_data.ext', 'r')

__file__ を使用して現在のテスト モジュールからの相対パスを使用することを考えましたが、__file__ を呼び出すテスト モジュールが個別に実行されている場合、これは機能しません

人々は一般的にこの問題をどのように解決しますか?

4

2 に答える 2

9

さまざまな方法が思い浮かびます。

  1. データ ディレクトリの環境変数を設定する
  2. 常にインポートする小さなモジュールを作成します。これは、データ ディレクトリに対して相対的な位置を固定することのみを目的としており、__file__そこから呼び出します。
  3. 実行時にデータを生成する
  4. ファイルではなくデータベースにデータを保存する
  5. パッケージに関連する場所ではなく、ファイル システム内の固定された場所にデータを保存します。
  6. テスト コードを直接実行しないでください

最適なソリューションは、環境と特定のデータおよびプログラムによって異なります。

于 2013-01-16T15:27:31.677 に答える
-1

それがあなたの完全なソリューションかどうかはわかりませんが、Python での単体テストでは、常にNose. これには、優れた Test Discovery 手順があります。そのメカニズムについては、こちらを参照してください。たぶん、Python の従来の単体テストにも使用するアイデアが得られるかもしれません..

py.testまた、巧妙な発見メカニズムを使用しています..

于 2013-01-16T15:28:22.860 に答える