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