unittestのPythonのユニットテストフレームワーク

単体テスト

ユニットテストをロードする二つの方法を提供します。

1. unittest.main()メソッドを介して直接装填ユニットテストのテストモジュール。

2.設定された試験セルにテストスイートのすべてを追加し、一度にすべてのテストオブジェクトをロードします。

ユニットテストケース

ユニットテストフレームワークはテストケースクラスのテストで構成されており、すべてのテストケースの基本クラスですクラスを継承しなければならないすべてのカスタム・テスト・クラスが必要です。「テスト」で開始する必要がありますカスタムテストメソッドを作成します。

次のように定義されたいくつかの特別なメソッドのTestCaseクラス:

1. setUpClassは():実行された任意の試験方法を実行する前に、ユニットテストの準備は、セットアップ機能の前に実行@classmethodデコレータを使用するように変更する必要があり、全体の試験プロセスは一度だけ行われます。

2.セットアップ():各試験ラン前方法、試験前に初期化動作。

3. TEARDOWN():各テストの実行動作の終了後に本方法は、試験後のクリーンアップ。

4. tearDownClass():クリーンアップするために後半のテスト実行の終了後にすべてのテストメソッドの実行の実装、ユニットの後、変更した@classmethodデコレータを、ティアダウン()を使用する必要があり、テストプロセス全体を一度だけ実行されます。

#導入時
のインポート時
#ライブラリwebdriverを導入
セレン輸入webdriverをから
unittestのモジュール#紹介
インポートunittestモジュール

(たunittest.TestCaseの)クラスログイン:
    DEFセットアップ(セルフ):
        self.driver webdriver.Chrome =()
   #は、APIコードは「テスト」コマンドを使用して、プロセスを開始するに含まれている呼び出し、
    デフtest_visit(自己) :
        self.driver.get("http://www.baidu.com"
        self.driver.find_element_by_id("KW").send_keys("selenuim"
        time.sleep(2)
        印刷(self.driver.current_url)

    解体DEF(セルフ):
        self.driver.quit()
#main()メソッドは、テスト実行の開始時にクラスのデフォルトの方法で、必ずしもテストケースの実装が、ASCIIはに従ってコーディングによる方法の名前トップダウン注文執行の場所。
__name__ == IF '__main__'
    unittest.main()
アサーションメソッド

ユニットテストによってassertEqual()結果は期待した結果と同じであることを主張する方法を提供しました。ここに記載されていない多くのアサーションメソッドがあります。

テスト結果:

。「」ドット演算を使用してテストケースを表します。

「F」でテストケースを実行に失敗したことを意味します。

「S」でスキップされたテストランを表し、

「E」で実行中のエラーのテストケースを表し、

テストを無視

テストは無条件と無視無視条件に分かれて無視します。あなたは、テストを実行して、時にはテストケースの一部をスキップする、またはテストケースにテストケースを満たす特定の条件、または直接が失敗したときにテストをスキップする必要がある場合。

unittestのは、これらの要件デコレータの実装を提供します。

インポート unittestの
クラス(たunittest.TestCaseの)のMyTest:
    @ unittest.skip("無条件スキップ装飾的なテスト、テストはその理由をスキップする必要は"
    DEF(自己)test_skip:
        印刷("テストA"
    unittest.skipIf @ (> 2 3、"条件が真のとき、テストがスキップされた装飾である"
    DEF test_skipIf(セルフ):
        印刷("テストB"
    unittest.skipUnless @> 2(3、「条件が真です、実行飾らテスト「
    DEFの test_skip_unless(セルフ):
        印刷(」テストC "
    #下流デコレータかかわらず、失敗の結果は、テストに失敗したとしてマークされますが、故障情報投げていないかどうかの
   
unittest.expectedFailure @
    DEFの test_expected_failureを(自己):
        self.assertEqual(2、3)

使用HTMLTestRunnerは、HTML形式のテストレポートを生成します

テストユニットの完了後、テストレポートがHTML HTMLTestRunnerによって生成されてもよいです。テスト結果はコンソールに出力される実行する前に、読みやすいでも魅力的でもありません。

HTMLTestRunner.pyファイルをダウンロードします。

1)ファイルをダウンロードしHTMLTestRunner.py:http://tungwaiyip.info/software/HTMLTestRunner.html

2)システムファイルを操作ウィンドウは、インストールファイルのフォルダパスのlibのpythonにダウンロードされます。

Ubuntuのオペレーティングシステムファイルは、ファイルのdist-パッケージのPythonのインストールパスのフォルダにダウンロードされます。

 

MacOSXのオペレーティングシステムファイルは、パスのフォルダのインストールファイルのPythonのsite-packagesにダウンロードされます。

カタログファイルフォルダの赤いラインにコマンドターミナルのスイッチを開きます。

CD /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/

その後HTMLTestRunner.py現在のフォルダにダウンロードしたファイルをコピーします。

 

HTMLTestRunnerが原因python2でpython2であり、中のpython3での使用にダウンロードしたファイルを変更する必要があるので3は、構文の変更の一部です。

ファイルHTMLTestRunner.pyファイルを変更します。

ライン94は、インポートたStringIO ioの輸入に変更されます

ライン539、self.outputBuffer = io.StringIO修正self.outputBuffer = StringIO.StringIO()()

第642行はれる場合はないrmap.has_key(CLS):RMAPにCLSない場合は更新日:

最初の行766、UO = o.decode( 'ラテン-1')UOが電子を改変しました=

ライン772は、UE = e.decode( 'ラテン-1')は、UEがEは=修飾しました

第631行、将印刷>> sys.stderrを持ち、 '\ n後やり直し経過:%s' は%(self.stopTime-self.startTime)修改成プリント(sys.stderrを持ち、 '\ n後やり直し経過:%s' は%(自己。停止時間stopTime-self.startTime))

3、使用の導入:

1)引包:HTMLTestRunnerのインポートから*

2)、例えば:

もし__name__ == '__main__':
    レポート= REPORT_PATH + '\\ report.htmlを'
    オープン(レポート、 'WB')Fとして有する:
        ランナー= HTMLTestRunner(F、冗長性= 2、タイトル= 'テスト'、説明=」测试报告')
        runner.run(TestBaidu(' test_search '))

备注:

1)私は、インポートHTMLTestRunner、上記の実行で開始しました

2)最後から二番目の行エラー:例外TypeError:「モジュール」オブジェクトである呼び出し可能ではありません。
次の2つの方法のうち、インポートモジュールを差を利用する場合:使用を定義し、追加するためのモジュール名を、そしてHTMLTestRunnerのインポートから*必要は追加されません。以下の二つの方法になります
。1、
HTMLTestRunnerインポート*から
ランナーHTMLTestRunner =(F、冗長性= 2、タイトル=「テスト」、説明=「テストレポート」)

2、
インポートHTMLTestRunner
ランナー= HTMLTestRunner.HTMLTestRunner(F、冗長性= 2、タイトル= 'テスト'、説明= '测试报告')

例えば:

導入時のインポート時、OSの導入webdriverをのライブラリーからのセレンのインポート webdriverを#が導入ユニットテストモジュールのインポート unittestの導入HMTLのテストレポートモジュールのインポート HTMLTestRunnerのクラスを訪問(たunittest.TestCase)から:DEFセットアップ(セルフ):         self.driver = webdriver.Chrome () のAPI コードを呼び出すがするために含まれます「テスト」コマンド起動プロセスDEFの test_visit(セルフ):         self.driver.getを(「http://www.baidu.com」









   

  
   


        self.driver.find_element_by_id("KW").send_keys("セレン"
        self.driver.find_element_by_css_selector("INPUT#1 su.bg.s_btn").click()
        time.sleep(2)
        self.assertEqual(「selenium_ 百度検索、self.driver.title)

    DEFティアダウン(自己):
        self.driver.quit()

IF __name__ == '__main__' :
    テストスイート
   
testUnit = unittest.TestSuiteインスタンス()
    テストスイートにテストケースを追加し
   
testunit。 addTest(訪問から("test_visit" ))
    GET現在の時刻
   
nowtime = time.strftime("%D %% m_Low Y_%のH:%M:%Sの"
    #は、レポートの保存パスを定義し、異なる識別名は、スクリプトの実行時間によって、複数のレポートを生成
   
REPORT_PATH = '/ユーザ/ yuandaping /ダウンロード/'
   
レポート=を+ REPORT_PATH '/' + + nowtime 'report.htmlを'
   
#は、テストレポートを定義してオープン(レポート、'WB' AS:F         ランナー= HTMLTestRunner.HTMLTestRunner(F =ストリーム、タイトル= ' Baiduの検索テストレポート' =説明、' 実装例を使用:'#の走行テスト runner.run(TestUnit) 近いレポートファイル f.closeを()
   


       
       

       
       

スクリプト生成されたレポートファイルを実行した後:/ユーザー/ yuandaping /ダウンロード/ 2019_09_23 17:53:54report.html

 

注意:

DDTは、unittestの拡張ライブラリ用に設計されたユニットテストフレームワークです。これは、テストの実行に異なるテストデータの使用を可能にし、テストケースを複数表示すること。

インストール:PIP3はDDTをインストール

鼻とpytestユニットテストフレームワーク、ユニットテストをサポートしながらパラメータ化Pythonは、ライブラリのパラメータです。

インストール:PIP3は、パラメータインストール

おすすめ

転載: www.cnblogs.com/douyini/p/12650635.html