結合の例には、検査部に連絡してください。
ファイル構造:
| ---- Python_unittest
クラス初期化関数を定義し、及び実施例4の演算方法| -------- math_operation.py位クラス[クラスMathOperation]を定義します
クラス減算テストユースケースを定義し、:| -------- two_num_delete.py位クラス[クラスTestDelete(たunittest.TestCase)]を定義します
テストケースによってクラス区分を定義し、:| -------- two_num_divide.py位クラス[クラスTestDivide(たunittest.TestCase)]を定義します
| -------- unittest_suite.py
1.two_num_delete.py
unittesインポート
Python_unittest.math_operationインポートMathOperationのから クラス(たunittest.TestCaseの)TestDelete: @classmethod DEF setUpClass(CLS): "" " すべてのユースケースを実行する前に、setUpClassクラスのプロパティを呼び出す :リターン: " "" LOG_FILE_NAME =「math_operation_result_log.txt " cls.one_file =オープン(LOG_FILE_NAME、MODE =" A "エンコード=" UTF-8 ") を印刷(F" [{LOG_FILE_NAME}]オープンファイル") cls.one_file.write(" \ {N- ^ = 40秒} \ n ".format("開始] [減算テストケース")) @classmethod DEF tearDownClassを(CLS): " "" 全てのユースケースで行った後、それは、かつてtearDownClassクラス属性を呼び出す :リターン: 「」 " cls.one_file.write( "{:= ^ 1940 } \ n" .format( " []減算テストケースの実行が終了")) cls.one_file.close() DEFのtest_delete0(自己): 。REAL_RESULT MathOperation =(9 6).Delete() expect_value 3 =。 トライ: self.assertEqual(expect_value、REAL_RESULT、MSGは、= "は2つの数値例外を引く") プリント( "A> B> 0、正常AB&結果") self.one_file.write( ): "\ N-を渡しA> B> 0、結果はABテストです" :ERR Asを除いてAssertionError プリント(F "は、具体的に異常:ERR {}") self.one_file.write(F「A> B> 0場合、試験ABの結果:失敗\ nは特定の異常たERR} {「)
上げERRの DEFのtest_delete1(自己): REAL_RESULT = MathOperation(-9、-6).delete() expect_value = -3 してみてください。 self.assertEqual(expect_value、REAL_RESULT、MSG = " 2つの数の例外を引く") プリント( "A <B <0、ABは通常の結果") self.one_file.write(「A <B <0時間、ABテスト結果:合格\ N- ") aSにERRとAssertionErrorを除く: 印刷(F"は、具体的に異常:ERR {} ") self.one_file.write(F" <B <0、ABの試験結果:失敗\ nを例外は、特にERR} {「)が
上げERR
2.two_num_divide.py
ユニットテストインポート Python_unittestインポートMathOperationのから (たunittest.TestCaseの)クラスTestDivide: @classmethod DEF setUpClass(CLS): "" " ファイルのすべてのユースケースを実行する前に実行される :リターン: " "" LOG_FILE_NAME = "math_operation_result_log.txt" cls.one_fileオープン=(LOG_FILE_NAME、MODE = "A"、エンコード= "UTF-8") を印刷(F "[{LOG_FILE_NAME}]オープンファイル") cls.one_file.write( "\ {N-:1940} = ^ \ N-" .format(「開始【分割】テストケース」)) @classmethod DEF tearDownClass(CLS)を: 「」 " すべてのユースケースの実装後、tearDownClassクラス属性いったん呼び出さ :リターン: 「」」 cls.one_file.write( "{:= ^ 1940 } \ n"( ".format )[]テストケースの実行の分割が終了") cls.one_file.close() DEFのtest_divide0(自己): 。REAL_RESULT MathOperation =(9 3).divide() expect_result 3 =。 トライ: self.assertEqual(expect_result、REAL_RESULT、MSG =) "二異常分割" 印刷( "A> B> 0、/ B正常の結果") self.one_file。書き込み( "A> B> 0 、/ B テスト結果の:合格\ N-") AssertionErrorを除くとERRとして: ( "特異的に異常:ERR {}" F)印刷 self.one_file.write(F「> B> 0、/ Bの結果は、試験される:失敗\ nは特定の異常がERR} {「)であった
レイズERRの DEFのtest_divide1(自己): REAL_RESULT = MathOperation(10、-3).divide() expect_result = 9 トライ: self.assertEqual(expect_result、REAL_RESULT、MSG = "分割2異常") プリント( "/ BのA> 0> B、正常な結果") self.one_file.write(「A> B> 0、試験結果のA / B:パス\ N- ") aSにERRとAssertionErrorを除く: 印刷(F"は、具体的に異常:ERRを{} ") self.one_file.write(F"> B> 0、/ Bテスト結果:失敗\ nは特定の異常たERR} {\ N- ")
上げERR
3.unittest_suite.py
ユニットテストインポート num_divide AS Python_unittestインポートtwo_num_divideから Python_unittestインポートtwo_num_deleteのnum_deleteからAS 位] [キット定義 unittest.TestSuiteインスタンスone_suite =() #を[]ローダを定義 #ローダと、ロードされたことによって示され、そしてキットに加え one_loader = unittest.TestLoader () one_suite.addTest(one_loader.loadTestsFromModule(num_divide)) one_suite.addTest(one_loader.loadTestsFromModule(num_delete))
#定義ランナー] [one_runner = unittest.TextTestRunner()one_runner.run(one_suite)
[知識]
one_suite。addTest(one_loader.loadTestsFromModule(num_divide))は、キットに一つにより実施例プラステストモジュール上に一方を添加します
one_suite。addTests(one_loader.loadTestsFromModule(num_divide)、one_loader.loadTestsFromModule(num_delete))は同時に複数のテストモジュールに追加することができます
実行順序及び添加順序に関係します。
4.ファイル名を指定して実行結果:
[知識]
ユースケースの合計数があるときにスローされた例外をキャッチするために注意を払うようにしてください:失敗の数に基づいてTEST_の始まるすべてのメソッドの数は、統計に[アサーション]異常AssertionErrorがスローされます。
正常な動作の代表的な失敗のためにF。
例は、シーケンスで実行しました:
loadTestsFromModele()メソッドが最初に実行されるモジュールを追加します。
モジュールロードテストの内部ASCIIコード方式の順序に従って実行されます。
defaultTestLoader.discover()ASCIIコードのデフォルトの負荷テストシーケンス。
5.unittest_discover.py
ユニットテストインポート one_suite = unittest.defaultTestLoader.discover( "") one_runner = unittest.TextTestRunner() one_runner.run(one_suite)
[知識]
デフ(自己、start_dir、パターン= 'テスト*用の.py'、top_level_dir =なし)を発見:
「テスト」モジュールの先頭にデフォルト・ロード・パス、モジュールのテストケースは、すべてのテストを開始する必要があります。
。Pyが配置されている現在のファイルのパスを表します。
one_suite = unittest.defaultTestLoader.discover(R "C:\ Users \ユーザーZFY \ PycharmProjects \ Python_unittest")また、絶対パスを指定することができます
6.生成されたログファイル
math_operation_result_log.txt