154

unittestPythonでモジュールを使用するときに、個々の単体テストを一時的に無効にするにはどうすればよいですか?

4

7 に答える 7

285

個々のテストメソッドまたはクラスは、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.')

その他のオプションについては、テストのスキップと予想される失敗に関するドキュメントを参照してください。

于 2013-04-22T02:30:23.333 に答える
27

デコレータを使用して、関数をラップできるテストを無効にし、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
于 2010-01-14T18:59:11.750 に答える
14

@unittest.SkipTestテストの上にデコレータを配置するだけで十分です。

于 2017-02-24T03:18:13.123 に答える
11

最新バージョン(2.7-未リリース)は、このようにテストのスキップ/無効化をサポートしています。このモジュールを入手して、既存のPythonインストールで使用することができます。おそらくうまくいくでしょう。

これまでは、スキップしたいテストの名前をから変更していましxtest_testnametest_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_"))))
于 2010-01-14T18:30:47.830 に答える
5

テストケースメソッドの名前をアンダースコアに変更します。test_myfuncは_test_myfuncになります。

于 2010-01-14T19:05:43.653 に答える
2

2.1のドキュメントでは、ignoreまたはskipメソッドを指定していません。

ただし、通常は必要に応じてコメントをブロックします。

于 2010-01-14T18:30:01.870 に答える
1

質問の「一時的に無効にされた」部分に焦点を当てると、最良の答えはユースケースによって多少異なります。私をここに連れてきたユースケースは、関数のテスト駆動開発を行っていることです。このプロセスでは、テストを連続して記述し、デバッグ用の関数でブレークポイントを使用することがよくあります。テストランナーを実行するたびにすべてのテストを実行すると、すでに機能しているテストのブレークポイントで停止することになります。関数の記述が終わったら、すべてのテストを実行したいので、「スキップ」を追加したり、テスト名などを変更したりすることは、私が望んでいることではありません。「スキップ」を使用した場合は、戻って「スキップ解除」する必要があります。

私のユースケースでは、解決策はテストコードではなく、テストランナーにあります。pytestを使用しています。pytestを使用すると、コマンドラインから単一のテストを簡単に指定できます。

pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME

(キャップ​​を自分の値に置き換えます)。

その質問はpython-unitestに対するものだったと理解しています。私は長い間それを使用していません。pytestに似たものがあったとしても驚かないでしょう。そうでない場合は、簡単にpytestに切り替えることができます。コードを変更する必要はありません。インストールして、テストランナーコマンドを変更するだけです。

また、PyCharmProを使用しています。私のテストコードを表示するページでは、各テストのdefの横に小さなアイコンがあります。そのアイコンをクリックして、そのテストを個別に実行できます。

于 2019-02-06T19:11:53.957 に答える