回答:
個々のテストメソッドまたはクラスは、両方ともunittest.skip
デコレータを使用して無効にできます。
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
その他のオプションについては、テストのスキップと予想される失敗のドキュメントをご覧ください。
@unittest.skip
正常に動作します。
@unittest.skip
は機能しません。
デコレーターを使用して、関数をラップできるテストを無効にし、googletestまたはpythonユニットテストがテストケースを実行しないようにすることができます。
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
出力:
testFoo has been disabled
最新バージョン(2.7-未リリース)は、テストのスキップ/無効化をサポートしています。このモジュールを入手して、既存のPythonインストールで使用することができます。おそらく動作します。
これ以前は、スキップしたいテストの名前をからに変更していましxtest_testname
たtest_testname
。
これを行うための簡単なelispスクリプトを次に示します。私のelispは少し錆びているので、問題がある場合は事前に謝罪します。未テスト。
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
@unittest.SkipTest
テストの上にデコレータを置くだけで十分です。
unittest.skip
(理由なし)Python 2ではエラーが発生しますが、Python 3ではエラーが発生しません
質問の「一時的に無効になっている」部分に焦点を当てると、最良の答えはユースケースによって多少異なります。ここで私を導いたユースケースは、関数のテスト駆動開発を行っていることです。このプロセスでは、連続してテストを記述し、デバッグのために関数のブレークポイントを使用することがよくあります。テストランナーを実行するたびにすべてのテストを実行すると、すでに機能しているテストのブレークポイントで停止してしまいます。「スキップ」を追加したり、テスト名などを変更したりすることは、関数の記述が完了したらすべてのテストを実行したいので、私が望むものではありません。「スキップ」を使用した場合は、戻って「スキップ」する必要があります。
私のユースケースでは、ソリューションはテストコードではなくテストランナーにあります。私はpytestを使います。pytestを使用すると、コマンドラインから単一のテストを簡単に指定できます。
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(キャップを自分の値に置き換えます)。
その質問がpython-unitestに対するものであったことを理解しています。長い間使っていません。それがpytestに似ていても私は驚かないでしょう。そうでない場合は、簡単にpytestに切り替えることができます。コードを変更する必要はありません。インストールして、テストランナーコマンドを変更するだけです。
また、私はPyCharm Proを使用しています。テストコードを表示するページでは、各テストのdefの横に小さなアイコンがあります。そのアイコンをクリックして、テストを個別に実行できます。
@unittest.SkipTest
機能しますが機能しません@unittest.skip