Table Of Contents

Previous topic

Pytest 組み込みヘルパー機能

Next topic

テストのアサーションにおける書き込みとレポート

基本的なテストの設定

コマンドラインオプションと構成ファイルの設定

一般的なヘルプオプションを使って、ini スタイルの構成ファイルのコマンドラインオプションとその値のヘルプを確認できます:

py.test -h   # オプションと構成ファイルの設定を表示

これはインストール済みのプラグインが登録したコマンドライン設定と構成ファイル設定も表示します。

INI 構成ファイルからテスト設定の読み込み方法

py.test は、コマンドライン引数のディレクトリとその上位ディレクトリの、最初に一致する ini スタイルの構成ファイルを検索します。次の順番でファイル名を見ていきます:

pytest.ini
tox.ini
setup.cfg

最初の [pytest] のセクションを見つけたときに検索を中止します。複数の設定ファイルから設定値をマージするようなことはしません。サンプルを紹介します:

py.test path/to/testdir

次のように構成ファイルを含むディレクトリがあります:

path/to/testdir/pytest.ini
path/to/testdir/tox.ini
path/to/testdir/setup.cfg
path/to/pytest.ini
path/to/tox.ini
path/to/setup.cfg
... # ファイルシステムのルートまで上る

引数が py.test を実行するために提供されるものなら、カレントディレクトリがその検索の開始位置に使われます。

コマンドラインオプションのデフォルト値の変更方法

py.test を使うときに毎回一連のコマンドラインオプションを入力するのは飽き飽きしてきます。例えば、毎回スキップしたり xfail したテストの詳細情報を見たいなら、進捗状況を簡潔な “ドット” 出力にするのと同様に、構成ファイル内にその設定を記述できます:

# pytest.ini の内容
# (または tox.ini か setup.cfg)
[pytest]
addopts = -rsxX -q

設定後に実行すると py.test は指定したオプションを追加します。

組み込みの構成ファイルオプション

minversion

テストの実行に必要な pytest の最小バージョンを指定します

minversion = 2.1 # pytest-2.0 で実行すると失敗する
addopts

ユーザーが指定するようにコマンドライン引数をセットするのに特化した OPTS を追加します。次のような ini ファイルがある場合:

[pytest]
addopts = --maxfail=2 -rf  # 2回失敗したら終了して、その内容をレポートする

py.test test_hello.py は、実際には次の内容と同じです:

py.test --maxfail=2 -rf test_hello.py

デフォルトでは何のオプションを追加しません。

norecursedirs

再帰的に探索しないテストディレクトリのディレクトリ名のパターンを設定します。それぞれ (fnmatch スタイル) のパターンがそのディレクトリ内を再帰的に調べるかを決めるのにディレクトリ名に適用されます。パターンマッチング文字は次の通りです:

*       全てに一致する
?       任意の1文字に一致する
[seq]   seq のうち任意の1文字に一致する
[!seq]  seq のどの文字にも一致しない

デフォルトパターンは .* _* CVS {args} となっており、 norecursedir を設定することで置き換えられます。特定のディレクトリを探索しない方法のサンプルは次の通りです:

# setup.cfg の内容
[pytest]
norecursedirs = .svn _build tmp*

これは典型的な subversion と sphinx の build ディレクトリと tmp という接頭辞をもつディレクトリを再帰探索しない設定です。

python_files

python ファイルをテストモジュールとみなす、1つかそれ以上の Glob スタイルのファイルパターンです。

python_classes

テストクラスをテストモジュールとみなす、1つかそれ以上の接頭辞です。

python_functions

テスト関数やメソッドをテストモジュールとみなす、1つかそれ以上の接頭辞です。

命名規則の変更 のサンプルもご覧ください。