[解決済み】典型的なテストディレクトリ構造でunittestを実行する
質問
シンプルなPythonモジュールであっても、非常に一般的なディレクトリ構造は、ユニットテストをそれ自身の
test
ディレクトリを作成します。
new_project/
antigravity/
antigravity.py
test/
test_antigravity.py
setup.py
etc.
例えば、こんな感じです。 PythonプロジェクトHowto .
私の質問は、簡単に言うと
実際にテストを実行するのは、どのような方法が一般的なのでしょうか?
私以外には当たり前のことなのでしょうけど、単に
python test_antigravity.py
は、test ディレクトリからその
import antigravity
は、モジュールがパス上にないため失敗します。
PYTHONPATHやその他の検索パスに関するトリックを修正できることは知っていますが、それが最もシンプルな方法であるとは思えません。
他の選択肢としては、テストファイルを別のディレクトリにコピーすればいいのですが、ちょっと間抜けな感じですし、そもそも別のディレクトリに置くという意味がずれているように思います。
では、私の新しいプロジェクトのソースをダウンロードした場合、どのようにユニットテストを実行するのでしょうか?私は、ユーザーに「ユニットテストを実行するにはXを実行してください」と言えるような回答が望ましいと思います。
解決方法は?
私の考える最良の解決策は
unittest
コマンドラインインターフェース
を実行すると、そのディレクトリが
sys.path
をする必要はありません。
TestLoader
クラス)を作成します。
例えばこのようなディレクトリ構造の場合。
new_project
├── antigravity.py
└── test_antigravity.py
実行すればいいんです。
$ cd new_project
$ python -m unittest test_antigravity
あなたのようなディレクトリ構造の場合。
new_project
├── antigravity
│ ├── __init__.py # make it a package
│ └── antigravity.py
└── test
├── __init__.py # also make test a package
└── test_antigravity.py
そして、テストモジュールの中の
test
パッケージをインポートすると
antigravity
パッケージとそのモジュールは通常通り使用できます。
# import the package
import antigravity
# import the antigravity module
from antigravity import antigravity
# or an object inside the antigravity module
from antigravity.antigravity import my_object
テストモジュールを1つ実行する。
単一のテストモジュールを実行するには、この場合
test_antigravity.py
:
$ cd new_project
$ python -m unittest test.test_antigravity
テストモジュールをインポートするのと同じ方法で参照するだけです。
単一のテストケースまたはテストメソッドを実行する。
また、1つの
TestCase
または単一のテストメソッドです。
$ python -m unittest test.test_antigravity.GravityTestCase
$ python -m unittest test.test_antigravity.GravityTestCase.test_method
すべてのテストを実行中。
を使用することもできます。
テストディスカバリー
という名前のモジュールあるいはパッケージでなければなりません。
test*.py
(で変更可能)。
-p, --pattern
フラグを使用します)。
$ cd new_project
$ python -m unittest discover
$ # Also works without discover for Python 3
$ # as suggested by @Burrito in the comments
$ python -m unittest
これは、すべての
test*.py
の中にあるモジュールは
test
パッケージを使用します。
関連
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】pytestでコンソールに印刷する方法は?
-
[解決済み] ディレクトリ内のすべてのPythonユニットテストを実行するにはどうすればよいですか?
-
[解決済み] JUnit 4で条件付きでテストを無視する
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】コマンドラインからunittest.TestCaseのテストを1つ実行する
-
[解決済み】pytestのPATH問題 'ImportError: YadaYadaYadaという名前のモジュールがない'
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python百行で韓服サークルの画像クロールを実現する
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] ディレクトリ内のすべてのPythonユニットテストを実行するにはどうすればよいですか?