ユニットの戦闘運動テストのPython

結合の例には、検査部に​​連絡してください。

ファイル構造:

| ---- 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

 

 

おすすめ

転載: www.cnblogs.com/jszfy/p/11192301.html