Djangoユニットテストの簡単な例
9884 ワード
1つの機能の検証には多くのテスト用例が必要であり、テスト用例を集めて実行することができる.これにより、テストキットTestSuiteの概念が生まれ、単一のテスト用例を組み立て、用例の実行順序を規定し、TestSuiteもTestSuiteを埋め込むことができる.
TestCaseは、addTest()からTestSuiteにロードされ、TestSuiteインスタンスを返すことができます.
例:simple_testの使用例をテストキットにロード
unittest.makeSuiteはファイルに基づいてテストスイートを一括作成し、1つのファイルに非常に多くのテストインスタンスがある場合は、インスタンス名の類似性に基づいてテストスイートを作成できます.
unittest.makeSuite(testCaseClass, prefix)
testCaseClassはテストケースクラスの名前です
prefixの例が似ている部分の名前
例:
unittest.TestLoader()は、ディレクトリに基づいてテストスイートを一括作成し、使用例を指定してディレクトリを保存し、ファイル名に基づいてテスト使用例を一致させることができます.
注意:使用例が格納するサブディレクトリには__が必要です.init__.pyファイルです.そうしないと、インスタンスをロードできません.
unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)
start_dirテストするモジュール名またはテスト例ディレクトリ.
pattern='test*.py'は、使用例ファイル名のマッチングの原則を表します.アスタリスク「*」は任意の複数の文字を表します.
top_level_dir=Noneテストモジュールの最上位ディレクトリ.None<=>テスト例はマルチレベルディレクトリに置かない
例:
または
テストキットを作成した後、unittestを使用するテスト例を実行します.TextTestRunner().run(TestSuite)
例:simple_のロードを実行するtest例のテストキット
TestSuite.addTest単一テストケースの追加
TestSuite.addTestsシーケンスによるテストケースの追加
TestSuite.countTestCases()統計テストキットの使用例数
テスト用例ファイルにsuiteメソッドを追加し、テストキット をロードしやすい
例:
上記の例では、テストスイート関数を作成し、使用時にその関数を直接呼び出し、追加例を追加する必要はありません.
ネストされたテストキット、複数のテストキットを組み合わせた
TestCaseは、addTest()からTestSuiteにロードされ、TestSuiteインスタンスを返すことができます.
例:simple_testの使用例をテストキットにロード
suite=unittest.TestSuite() # suite.addTest(simple_test('test_add')) # suite.addTest(simple_test('test_divide')) #
unittest.makeSuiteはファイルに基づいてテストスイートを一括作成し、1つのファイルに非常に多くのテストインスタンスがある場合は、インスタンス名の類似性に基づいてテストスイートを作成できます.
unittest.makeSuite(testCaseClass, prefix)
testCaseClassはテストケースクラスの名前です
prefixの例が似ている部分の名前
例:
suite = unittest.makeSuite(simple_test, 'test') #
unittest.TestLoader()は、ディレクトリに基づいてテストスイートを一括作成し、使用例を指定してディレクトリを保存し、ファイル名に基づいてテスト使用例を一致させることができます.
注意:使用例が格納するサブディレクトリには__が必要です.init__.pyファイルです.そうしないと、インスタンスをロードできません.
unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)
start_dirテストするモジュール名またはテスト例ディレクトリ.
pattern='test*.py'は、使用例ファイル名のマッチングの原則を表します.アスタリスク「*」は任意の複数の文字を表します.
top_level_dir=Noneテストモジュールの最上位ディレクトリ.None<=>テスト例はマルチレベルディレクトリに置かない
例:
suites=unittest.defaultTestLoader.discover('./testDirectory, pattern='*_test.py')
または
suites=unittest.TestLoader().discover('./testDirectory, pattern='*_test.py')
テストキットを作成した後、unittestを使用するテスト例を実行します.TextTestRunner().run(TestSuite)
例:simple_のロードを実行するtest例のテストキット
runner = unittest.TextTestRunner() runner.run(suite) #
unittest.TestSuite()の一般的な方法
TestSuite.addTest単一テストケースの追加
suite.addTest(simple_test('test_add'))
TestSuite.addTestsシーケンスによるテストケースの追加
suite.addTests([simple_test('test_add'),simple_test('test_divide')])
TestSuite.countTestCases()統計テストキットの使用例数
suite.countTestCases()
テストキットの活用
例:
import unittest # unittest
from unittest_doc.com.Calculator.Calculator import calculator # # TestCase class simple_test(unittest.TestCase): def setUp(self): print('@@@ test_simple@@@') self.a = calculator(1, 2) def test_add(self): print('--- test_simple add---') self.assertEqual(self.a.minus(), -1, ' ') self.assertEqual(self.a.add(), 3, ' ') self.assertNotEqual(self.a.divide(), 1, ' ') def test_divide(self): print('--- test_simple divide---') self.assertEqual(self.a.divide(), 0.5) def tearDown(self): print('@@@ test_simple@@@') def suite(): # suite = unittest.TestSuite() # suite.addTests([simple_test('test_add'), simple_test('test_divide')]) return suite if __name__ == '__main__': runner = unittest.TextTestRunner(verbosity=2) runner.run(suite())
上記の例では、テストスイート関数を作成し、使用時にその関数を直接呼び出し、追加例を追加する必要はありません.
suite1 = unittest.TheTestSuite() suite2 = unittest.TheTestSuite() alltests = unittest.TestSuite((suite1, suite2))