[OpenStack UT]ユニットテストのtestscenarios
2419 ワード
heat codeを見て、testscenariosの使用を見て、好奇心のある研究をしました
testscenariosは、classでscenariosに値を割り当て、異なるシーンを記述するフレームワークを実現し、テストcaseはtestscenariosフレームワークを通じてこれらのscenariosに対する異なるtestを自動的に生成し、異なるシーンをテストする目的を達成することができる.
推奨https://pypi.python.org/pypi/testscenarios/最新のtestscenarios codeをダウンロードして見ると、code構造はとても簡単です.
コードには主に2つのファイルがあります.pyとlib/testscenarios/testcase.py
scenarios.pyはcoreセクションで、scenarios casesのいくつかのfunctionをどのように生成するかを説明しています.次の例ではload_tests_apply_scenariosは、テストロードprotocolを適応してscenarios casesを生成する方法の1つであり、以下の例ではload_に付与するtests、load_を実現tests protocolのテストローダは、生成するscenarios casesを自動的にテストにロードすることができる.
testcase.pyはTestWithScenarios、TestWithScenariosはWithScenarios、unittestと言える.TestCaseの組み合わせパッケージは、使用者がより便利に使用できるように、パッケージを追加し、testscenariosがpypiで公開したパッケージのdocディレクトリの下でexample.pyはTestWithScenariosを使う良い例です.ここには貼られていないので、とても簡単です.
次にtestscenariosのOpenStackプロジェクトでの使用を見てみましょう.次にcodeはpython-heatclient/heatclient/tests/test_から抜粋します.template_format.py、使用例説明の使い方
本例のmockについて.patch.objectとside_effectの使い方は、私のもう一つのブログを参考にしてください.http://blog.csdn.net/juvxiao/article/details/21562325
Line 1: load_testsはunittestライブラリのfunctionで、テスト・インスタンスのロード方法をカスタマイズします.
classではscenariosに値が付与され、key-valueからなるリスト、valueはdictです.この例のraised_のようなtestのようにいくつかの値を渡すことができます.exception
この例では、3つのtest caseを形成して実行する効果があり、「scanner」case実行時にfunction内のmockオブジェクトのside_をテストします.effectはyamlです.scanner.ScannerError();
「parser」case実行時テストfunctionでmockオブジェクトのside_effectはyamlです.scanner.ParserError(); ‘reader'case実行時テストfunctionでmockオブジェクトのside_effectはyamlです.reader.ReaderError('', '', '', '', ''),
testscenariosは、classでscenariosに値を割り当て、異なるシーンを記述するフレームワークを実現し、テストcaseはtestscenariosフレームワークを通じてこれらのscenariosに対する異なるtestを自動的に生成し、異なるシーンをテストする目的を達成することができる.
推奨https://pypi.python.org/pypi/testscenarios/最新のtestscenarios codeをダウンロードして見ると、code構造はとても簡単です.
コードには主に2つのファイルがあります.pyとlib/testscenarios/testcase.py
scenarios.pyはcoreセクションで、scenarios casesのいくつかのfunctionをどのように生成するかを説明しています.次の例ではload_tests_apply_scenariosは、テストロードprotocolを適応してscenarios casesを生成する方法の1つであり、以下の例ではload_に付与するtests、load_を実現tests protocolのテストローダは、生成するscenarios casesを自動的にテストにロードすることができる.
testcase.pyはTestWithScenarios、TestWithScenariosはWithScenarios、unittestと言える.TestCaseの組み合わせパッケージは、使用者がより便利に使用できるように、パッケージを追加し、testscenariosがpypiで公開したパッケージのdocディレクトリの下でexample.pyはTestWithScenariosを使う良い例です.ここには貼られていないので、とても簡単です.
次にtestscenariosのOpenStackプロジェクトでの使用を見てみましょう.次にcodeはpython-heatclient/heatclient/tests/test_から抜粋します.template_format.py、使用例説明の使い方
load_tests = testscenarios.load_tests_apply_scenarios
class YamlParseExceptions(testtools.TestCase):
scenarios = [
('scanner', dict(raised_exception=yaml.scanner.ScannerError())),
('parser', dict(raised_exception=yaml.parser.ParserError())),
('reader',
dict(raised_exception=yaml.reader.ReaderError('', '', '', '', ''))),
]
def test_parse_to_value_exception(self):
text = 'not important'
with mock.patch.object(yaml, 'load') as yaml_loader:
yaml_loader.side_effect = self.raised_exception
self.assertRaises(ValueError,
template_format.parse, text)
本例のmockについて.patch.objectとside_effectの使い方は、私のもう一つのブログを参考にしてください.http://blog.csdn.net/juvxiao/article/details/21562325
Line 1: load_testsはunittestライブラリのfunctionで、テスト・インスタンスのロード方法をカスタマイズします.
classではscenariosに値が付与され、key-valueからなるリスト、valueはdictです.この例のraised_のようなtestのようにいくつかの値を渡すことができます.exception
この例では、3つのtest caseを形成して実行する効果があり、「scanner」case実行時にfunction内のmockオブジェクトのside_をテストします.effectはyamlです.scanner.ScannerError();
「parser」case実行時テストfunctionでmockオブジェクトのside_effectはyamlです.scanner.ParserError(); ‘reader'case実行時テストfunctionでmockオブジェクトのside_effectはyamlです.reader.ReaderError('', '', '', '', ''),