ユニットテストフレームワークのunittest(7)

8457 ワード

一、要約


前の文章はすでにunittestフレームワークの特性を詳しく紹介して、私たちの日常のテストの仕事を満たすのに十分ですが、それはunittestのすべてではありません.
しかし、unittestを全部身につけるにはまだまだ足りない.

二、コマンドラインモード実行例


unittestフレームワークは、コマンドライン実行テストモジュール、テストクラス、さらには個別のテスト方法をサポートします.
実行テストモジュール:python-m unittest test_module1 test_module2 ...... パス方式python-m unittest tests/test_を採用することもできますsomething.py、python-m unittest-v test_のような高度なverbosityでパラメータ-vを加えることを実行したい場合はmodule
テストクラスの実行:python-m unittest test_module1.Test_Class 
試験方法の実行:python-m unittest test_module1.Test_Class.test_method 
このようなコマンドの組合せのhelpを取得するには、コマンドpython-m unittest-hを実行すると、次のようなヘルプ情報が得られます.
D:\Programs\Python\Demo\unittest1>python -m unittest -h
usage: python.exe -m unittest [-h] [-v] [-q] [--locals] [-f] [-c] [-b]
                              [-k TESTNAMEPATTERNS]
                              [tests [tests ...]]

positional arguments:
  tests                a list of any number of test modules, classes and test
                       methods.

optional arguments:
  -h, --help           show this help message and exit
  -v, --verbose        Verbose output
  -q, --quiet          Quiet output
  --locals             Show local variables in tracebacks
  -f, --failfast       Stop on first fail or error
  -c, --catch          Catch Ctrl-C and display results so far
  -b, --buffer         Buffer stdout and stderr during tests
  -k TESTNAMEPATTERNS  Only run tests which match the given substring   -k foo   foo_tests.SomeTest.test_something, bar_tests.SomeTest.test_foo ,  bar_tests.FooTest.test_something.

Examples:
  python.exe -m unittest test_module               - run tests from test_module
  python.exe -m unittest module.TestClass          - run tests from module.TestClass
  python.exe -m unittest module.Class.test_method  - run specified test method
  python.exe -m unittest path/to/test_file.py      - run tests from test_file.py

usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Verbose output
  -q, --quiet           Quiet output
  --locals              Show local variables in tracebacks
  -f, --failfast        Stop on first fail or error
  -c, --catch           Catch Ctrl-C and display results so far
  -b, --buffer          Buffer stdout and stderr during tests
  -k TESTNAMEPATTERNS   Only run tests which match the given substring
  -s START, --start-directory START
                        Directory to start discovery ('.' default)
  -p PATTERN, --pattern PATTERN
                        Pattern to match tests ('test*.py' default)
  -t TOP, --top-level-directory TOP
                        Top level directory of project (defaults to start
                        directory)

For test discovery all test modules must be importable from the top level
directory of the project.

 
パラメータが送信されていない場合、Test Discoveryが実行されます.たとえば、コマンドpython-m unittest(python-m unittest discoverにも等しい)がモジュール、クラス、またはメソッドを与えていない場合、彼が行うことはTest Discoveryです.
たとえば、コマンド:python-m unittest discover-s project_directory-p「*_test.py」このコマンドでは、パラメータ-sと-pが使用されます.-sは、そのディレクトリからデフォルト(.),-pは、python-m unittest discover project_に等しいファイル名を表します.directory "*_test.py"
python-m unittest discover-hがどのように役立つかを入力し、各パラメータの説明を明確に明記します.
D:\Programs\Python\Demo\unittest1>python -m unittest discover -h
usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Verbose output
  -q, --quiet           Quiet output
  --locals              Show local variables in tracebacks
  -f, --failfast        Stop on first fail or error
  -c, --catch           Catch Ctrl-C and display results so far
  -b, --buffer          Buffer stdout and stderr during tests
  -k TESTNAMEPATTERNS   Only run tests which match the given substring
  -s START, --start-directory START
                        Directory to start discovery ('.' default)
  -p PATTERN, --pattern PATTERN
                        Pattern to match tests ('test*.py' default)
  -t TOP, --top-level-directory TOP
                        Top level directory of project (defaults to start
                        directory)

For test discovery all test modules must be importable from the top level
directory of the project.

三、TestLoader


前の文章では、unittestを使用するテストセットについて述べた.TestLoader().loadTestsFromTestCase(TestClass)は、テストクラスを直接loader()
実はTestLoaderには他の方法があります
  • loadTestsFromModule (module, pattern=None)
  • loadTestsFromName(name,module=None)およびloadTestsFromNames(names,module=None)
  • getTestCaseNames(testCaseClass)は、試験方法名を格納シーケンス
  • を返す.
  • discover(start_dir,pattern='test*.py',top_level_dir=None):この方法は何度も
  • を使用しました.
  • defaultTestLoader:彼はTestLoaderのインスタンスです.カスタマイズされたTestLoaderを必要としない場合は、これを直接使用すると、TestLoaderインスタンス
  • を繰り返し作成することができます.

    四、まとめ


    unittestユニットのテストフレームワークは、ここでは基本的に日常の仕事のニーズを満たしているが、これはunittestのすべてではなく、多くの特性があり、読者はPythonの公式サイトに直接アクセスしてunittestのAPIドキュメントを見ることができ、学習にとって公式ドキュメントは最高の書籍である.