Unittest ユニット自動テスト フレームワーク - ナレッジ ポイントの概要

Unittest 単体テスト フレームワーク
1. Unittest パッケージをインポートします
======================================== ==== ===============================
2. クラスを作成するときは、unittest.TestCase クラスを継承する必要があります
2.1 2.2のsetUpメソッドはクラスでテスト実行前の初期化作業2.3
でtearDownメソッドはクラスでテスト実行後のクリーンアップ作業
2.3でtestで始まるテストケース関数メソッドは通常のテストケースメソッド
. テスト ケースは ACSII コードの順序でロードされます. 数字と文字の順序は: 0 ~ 9、A ~ Z、a ~ z
2.4. メインの入口 main で、unittest.main() を使用します。 test で始まるメソッドを実行するためのメソッドです。
注: 実行するときは、実行中の指定されたモジュールを使用する必要があります。 module 内の Unittest では実行できません。そうしないと、繰り返し実行されます
============ =========================== ====================== ============
3.アサーションの設定
テストケース(4,demo02_calc.sum(2,2),「sumが通るかテスト」)の関数内に
self.assertEqualを
設定できます。アサーション
self.assertEqual(4,4) # それらが等しいかどうかを判断します
self.assertTrue(a) # それらが真であるかどうかを判断します
self.assertIn(" Ma Nu",name) # それが
self.assertGreater(4, 2) # より大きいかどうかを判断します
============================ ============= ================================
4. ユースケースを無視します:
@unittest.skip("Skip unconditionally"),
@ Unittest.skipIf(True,"条件が true の場合はスキップ")
@unittest.skipUnless(False,"条件が false の場合はスキップ False"),
@unittest.expectedFailure #実行失敗は失敗数にカウントされません

================================================= ======================
5. テストケースの実行順序: (テストスイートを使用しない場合は、ASCII コードの順序で実行されます。テストスイートを使用、テストスイートの追加順に実行)
5.1、方法1:(addTestメソッドで実行(テストスイートで実行されたテストで始まらないテストケースも実行可能)
)メインの入り口にあるテスト スイートのインスタンス: suite = Unittest .TestSuite()
次に、addTest(クラス名 (メソッド名)) メソッドを使用して、インスタンス
suite.addTestを通じてテスト ケースを順番に (1 つずつ実行します) 実行します。 (クラス名("メソッド名1"))
suite.addTest(クラス名("メソッド名2"))
suite.addTest(クラス名("メソッド名3"))
unittest.main(defaultTest="スイート")
または(方法 1 と同様に、テスト スイートの作成方法は次のとおりです)
put Unittest.Testsuite メソッド
def suite() を作成します。
suite = Unittest.TestSuite()
suite.addTest(test_case("test_bbb")) # addTest(クラス名 ("メソッド名"))
suite.addTest(test_case("ccc"))
return suite
if __name__ == '__main__':
unittest.main(defaultTest="suite")

5.2、方法 2: (unittest.makeSuite() はテスト クラス全体を追加します)
if __name__ == '__main__':
# 注: test で始まらないメソッドは、現時点ではテスト スイートに追加されません
# 注: makeSuite手動で実行する必要がある場合があります。 Add
suite =unittest.TestSuite(unittest.makeSuite(test_case)) # 内部にはクラス名が入ります
。unittest.main(defaultTest="suite")

5.3、メソッド 3 (unittest.TestLoader().loadTestsFromName() は .py ファイル全体の下にテスト クラスを追加します)
if __name__ == "__main__":
# TestLoader の文字列メソッドを通じてテスト ケースをロードします
# 1、テスト ケースを追加しますモジュール名.クラス名.メソッド名
# suite = Unittest.TestLoader().loadTestsFromName("demo11_test suite 4.test_case1.test_aaa")
# 2、テスト クラス全体を追加
# suite = Unittest.TestLoader().loadTestsFromName("demo11 _Test Suite 4.test_case1")
# 3、.py モジュール スイート全体の下にすべてのテスト クラスを追加します
= Unittest.TestLoader().loadTestsFromName("demo11_Test Suite 4")
Unittest.main(defaultTest='suite')

5.4、方法 4 (複数のサブスイートを作成し、それらを大規模なメイン スイートに統合する):
最初に他の py モジュールのパッケージをインポートし、次に複数のサブスイートを作成してから
メイン スイートを作成し、複数のサブスイートを渡します。 -addTest() メソッドを使用してスイートをメイン スイートに追加します。 メイン スイートに追加します。
ユニット
テスト フレームワークからインポート ユニットテストをインポートします。 ユニットテスト フレームワーク
からインポート デモ11_テスト スイート 4 を
インポートします。 loadTestsFromName('demo08_テストスイート1.test_case.test_aaa') #2、クラスsuite02全体 =unittest.TestLoader().loadTestsFromName("demo08_test suite 1.test_case") #3、.pyモジュール全体suite03 =unittest.TestLoader ().loadTestsFromName ("demo11_Test Suite 4") main_suite = Unittest.TestSuite() # メイン スイートmain_suite.addTest(suite01) # メイン スイートにサブスイートを追加しますmain_suite.addTest(suite02) main_suite.addTest(suite03)ユニットテスト。 main(defaultTest ="main_suite")










5.5、方法 5: (discover() を使用して、ディレクトリ全体にすべてのテスト ケースを追加して実行します)
まず必要なパッケージをインポートし、次に os を通じて all_case ディレクトリへのパスを見つけてから、unittest.defaultTestLoader.discover() を使用します。すべてのユースケースに一致するメソッド
でスイートを作成し、addTest(discover) メソッドで Discover を追加し、最後に
import os
import unittest
import HTMLTestRunner
import time
curren_path = os.path.dirname(__file__)
print( curren_path)
case_path = os を実行します。 path.join(curren_path,"all_case")

# 現在のパスから前のパスに戻ります
# case_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
print(case_path)

Discover =unittest.defaultTestLoader.discover(start_dir=case_path, # ユースケースパス
pattern="*_case*.py",
top_level_dir=None) # ファイルタイプ
# print(discover)
main_suite = Unittest.TestSuite()
main_suite.addTest(discover) )
unittest.main(defaultTest="main_suite")
======================================= === ================================
6. Unittest.main() メソッドを使用してコード
6.1 を実行します。テスト スイートを使用する場合は、unittest.main(defaultTest="suite") を使用します。

================================================= ======================
7. Unicode コードを中国語に変換
name.encode("utf-8").decode("unicode_escape") # 中国語に変換

================================================= ======================
8. HTMLTestRunner パッケージをインポートしてテスト レポートを生成します
# 実行してテスト レポートを生成します
# 今すぐタイムスタンプを追加します
= time.strftime( "%y-%m_%d_%H_%M_%S_",time.localtime(time.time()))
file_obj = open("D:/pythonProject/P7_P8_Requests/"
"unittest Framework/test_report/"
"{} test_report.html".format(now),"w+",encoding="utf-8")
# テストレポートオブジェクトを作成し、実行処理を file_obj に書き込む
runner = HTMLTestRunner.HTMLTestRunner(stream=file_obj,
title=テストレポート",
description="私はテストレポートの説明情報です")
runner.run(main_suite)
======================== == =============================================

詳細情報の表示unittest.main(verbosity=2)
0(サイレントモード):テストケースの総数と結果の総計のみ取得できます。
1 (デフォルト モード): サイレント モードとよく似ていますが、成功した各テスト ケースの前に「.」があり、失敗した各テスト ケースの前に「E」がある点が異なります。2
(詳細モード): テスト結果が表示されます。各テスト ケースのすべてのテスト ケース関連情報およびコマンド ラインに異なるパラメータを追加することで同じ効果が得られます

テストケースのメソッド以下---テストのアノテーション情報を記述---レポートに反映
self._testMethodName = "API_CASE_01"
self._testMethodDoc = "トークン取得インターフェースが正常に呼び出せることを確認"

ゼロ基礎から習得までの Python インターフェース自動テスト (2023 最新バージョン)

おすすめ

転載: blog.csdn.net/ada4656/article/details/134494179