pythonのユニットテストツールNoseのnosetestsコマンドのオプション一覧です。
一覧といいつつ途中で力尽きたので私の独断ですがよく使う順に上から並んでます。
基本的な使い方とかはのせてません。
1. 全てのテストを実行(何もつけないで実行)
noseの命名規則と一致するファイル・テストケースを全て実施
nosetests
2. 特定のファイル内のテストを実行(テストファイルへのパスをつけて実行)
nosetests test_settings.py
3. 特定のテストケースのみ実行(FILEPATH:ClassName.methodName)
nosetests test_settings.py # 特定のファイル内のテストを実行
nosetests test_settings.py:SettingsApiTestCase # 特定のファイル内の特定のクラス内のテストを実行
nosetests test_settings.py:SettingsApiTestCase.test_get_settings # 特定のファイル内の特定のクラス内の特定のメソッドのテストを実行
4. 前回実行で失敗したテストを実行(--failed)
nosetests --failed
5. 複数プロセスで並列実行(--processes=NUM)
起動プロセス数を指定。
nosetests --processes=4
6. テスト実行プロセスのタイムアウト(--process-timeout=SECONDS)
デフォルトは10秒
nosetests --process-timeout=10
7. stdoutを出力させる(-s, --nocapture)
下の例であればtest_settings.pyの中にprint()
を仕込んであればその内容が出力される
nosetests test_settings.py -s
8. テスト結果表示を詳細にする (-v、--verbosity=VERBOSITY)
nosetests sample_test.py -v
nosetests sample_test.py --verbosity=2
※ -vと--verbosity=2は同じ、verbosityを大きくするほど詳しくなる
9. テスト結果表示を簡単にする(-q)
nosetests test_settings.py -q
10. テストを実行しないでテストケース名のみ収集する(--collect-only)
-v
オプションと一緒に使いテストケース名をすべて出力させたりする。
nosetests --collect-only -v
11. working directoryの指定(-w)
下の例の場合./tests/
の下のtest_settings.pyを実行するようになる。
nosetests test_settings.py -w ./tests/
12. configファイルの指定(-c)
home directoryの.nosercかnose.cfgをデフォルトで読み込む。これを指定する場合のオプション。何も読み込まないようにするにはexport NOSE_IGNORE_CONFIG_FILES=1
nosetests test_settings.py -c ./config.ini
13. 特定のファイル内のテストを実行その2 (--tests)
カンマ区切りで複数のテストファイルを指定する
nosetests --tests=test_settings.py,test_login.py
nosetests test_settings.py test_login.py # これでも同じ
14. 正規表現にマッチするファイルを実行(-m REGEX, --match=REGEX, --testmatch=REGEX)
デフォルトでは((?:^|\b_\.-])[Tt]est)
が指定されているためtest
等で始まるファイルを実行する。下の例であればtest_settings.py
は実行される。
nosetests -m .*setting.*
15. 正規表現でテストファイルを除外(-I REGEX, --ignore-files=REGEX)
下の例ならtest_settings.pyは実行されない
nosetests -I .*setting.*
16. 正規表現でテストケースを除外(-e REGEX, --exclude=REGEX)
以下の例ならテストケースtest_get_settings1はスキップされtest_get_settings2は実行される
nosetests -e .*settings1.*
17. 追加で実行するテストファイル名を正規表現で指定(-i REGEX, --include=REGEX)
下の例だと-m aaaaaaaaaaaaa.py
をしているのでaaaaaaaaaaaaa.py
と完全一致する物しか実行されないところ、-i .*setting.*
を指定しているのでtest_settings.pyが実行されます
nosetests -m aaaaaaaaaaaaa.py -i .*setting.*
18. 失敗するまでテスト実行・失敗したらテスト停止(-x, --stop )
nosetests -x
19. テストのスキップを無効化する(--no-skip)
@unittest.skip("skipping this one")
等をつけるとテストケースがスキップされるがこれをスキップされなくするオプションだと思うのだが、実行するとスキップ自体はされてテスト結果の表示の時にOK (SKIP=1)
がOK
となるだけのよう???
nosetests test_settings.py --no-skip