47

次のような名前のファイルを含むディレクトリがあります。 test_foo.py

各ファイルはテスト ケースです。

私はしたいと思います

  1. コマンドラインからディレクトリ内のすべてのテストを実行します。unittest2Python 2.5.1 を実行しているので、私は を使用しています。これらのディレクトリの 1 つから、コマンド ラインで次のように入力してみました。

     python -m unittest2 discover -p 'test_*.py'
    

    およびいくつかの異なるバリアント。エラーは発生しませんが、何も起こりません。そのディレクトリ内のすべてのテストケース内のすべてのテストが実行され、結果が得られることを期待していました。

  2. また、これを行ったディレクトリにスクリプトを作成してみました:

     loader = unittest2.TestLoader()
     t = loader.discover('.')
    

    変数を出力すると、テスト ケースが表示されますが、ドキュメントからは、ローダー オブジェクトを取得したらどうすればtよいかわかりません。

4

3 に答える 3

73

を実行しているときに同じ問題が発生しpython -m unittest discoverました。設定を確認するための適切なチェックリストを次に示します。Nose許可された構成でより柔軟になりますが、必ずしも優れているとは限りません。

  1. すべてのファイル/ディレクトリが。で始まることを確認してくださいtest。は有効なPythonモジュール名ではないため、使用しないでください。test-something.pyを使用しtest_something.pyます。

  2. テストをサブディレクトリ(例)に配置する場合は、Pythonがディレクトリをパッケージとして処理するようにファイルtest/を作成してください。test/__init__.py

  3. すべてのクラステストケース定義は拡張する必要がありますunittest.TestCase。例えば、

    class DataFormatTests(unittest.TestCase)
    
  4. すべてのテストケースメソッド定義はで始まる必要がありますtest_

     def test_data_format(self):
    
于 2011-07-13T00:35:46.847 に答える
55

テストを見つけたら、テスト ランナーで実行できます。

Python 2 の場合:

import unittest2
loader = unittest2.TestLoader()
tests = loader.discover('.')
testRunner = unittest2.runner.TextTestRunner()
testRunner.run(tests)

Python 3 の場合:

import unittest
loader = unittest.TestLoader()
tests = loader.discover('.')
testRunner = unittest.runner.TextTestRunner()
testRunner.run(tests)

上記のコードを実行すると、テスト結果が標準出力に出力されます。

于 2011-12-01T00:40:50.390 に答える
26

unittest2Python のコマンド ラインからどのように使用しようとしているのかを考えると、 PyPI ページのメモを< 2.7見逃している可能性があると思います。unittest2

ノート

コマンドラインの使用法

Python 2.7 では、unittest コマンド ライン機能 (テスト検出を含む) をpython -m unittest <args>. unittest はパッケージであり、パッケージを呼び出す機能 python -m ...は Python 2.7 の新機能であるため、unittest2 に対してこれを行うことはできません。

代わりに unittest2 にはスクリプト unit2 が付属しています。コマンド ラインの使用法:

unit2 discover unit2 -v test_module

と呼ばれるこのスクリプトのコピーもあります。unit2.pyこれは、ファイルを実行するプログラムを決定するためにシバン行ではなくファイル拡張子を使用する Windows に役立ちます。これらのスクリプトはどちらも distutils によってインストールされます。

unit2Python 2.7 の「パッケージをメイン スクリプトとして実行」機能の代わりに、古い Python でこのノートが推奨するスクリプトを試してください。おそらく、そのソースは、自分のコードからテストを発見して実行する方法を正確に見つけるのにも役立つかもしれません.

于 2010-07-21T01:16:49.833 に答える