[TIL]Unit Test


導入する前に、開発者は正常に動作するかどうかをテストします.テストの方法もいろいろあるので、彼を理解してみましょう.

システムテスト方法


Test Pyramid


Google Test Automation Conferenceが提案したテストピラミッドは、3つのテスト方法の割合を推奨します.
  • E2E(UI) Testing - 10%
  • Integrating Testing - 20%
  • Unit Testing - 70%
  • 1.End-To-End(E2E) TEST


    上のコードの最初の項目で、フロントたちがクロムを入れて実際に動作させたのはこれです!
    Chromeブラウザを開いた後、私が作成したページに直接アクセスし、値を入力して確認する方法です.
    これはシステムテストで最も難しい方法です.これは自動化の面でも非常に難しい方法です.

    2.Integrations Testing


    HttpieやPostmanでテストしたバックエンドがこれ!
    2つ以上のクラスまたはサブシステムの結合をテストする方法.次はE 2 Eテストで、時間と財務の面で消費が多いです.

    3.Unit Test


    詳細は以下の技術です!

    Unit Testとは?



    ユニットテストとは、私が作成したコードの最小ユニットをテストする方法です.(ここで最小単位は함수)
    上記のコードの最初のプロジェクトでは、お客様と照合する前に
    1.httpie独自テストに合格する->Integrating Testing2.フロントとの連携テスト->E2E(UI) Testingこの2つの方法を行い,この方法よりも小さい単位でテストを行った.

    Unit Testの利点

  • は、他のテストよりも低コストです.人は一度にスクリプトで自動的に実行するから!
  • は、他のテストよりも高速に動作します.->2つ目のプロジェクトで使用することをお勧めする理由はこれです!
  • 一度設備テストが完了すると、中長期メンテナンスが容易になります.
  • すべての関数は,各方法でテストされ,コード自体にエラーが発生する可能性は低い.後で発見した誤りを修復した後、ユニットテストを行うだけでいい、
  • Unit Testの一般原則(いくつかのみ)

  • 試験ユニットは、各機能の最小ユニットに集中しなければならない.目的
  • 各テストユニットは独立している必要があります.1つのテストであってもよいし、複数のテストセットであってもよい場合は、しっかりスクロール(呼び出しの順序に関係なく)
  • .
  • テストを高速に動作させるように努力します.テストに必要なデータ構造が複雑すぎる場合は、別々に作成し、
  • をスケジュールします.
  • がその日の符号化を開始する前に、いつもテストセットを回します.
  • コードをデバッグするときは、まず新しいテストを作成してエラーを指摘します.これも私たちがお勧めする
  • です.
  • テスト関数の場合、長い記述的な名前を使用する必要があります.さもないと大事になるよ.🙃
  • Unit Test開発ガイドライン


    Pythonのunittestモジュール開発ユニットを使用してテストする場合、通常は次の手順に従います.

    1.unittestモジュールを最初にインポートします。

    import unittest

    2. unittest.TestCaseクラスを継承するテストクラスを作成します。

    class MyCalcTest(unittest.TestCase):

    3.テストクラスでtestで始まるテストメソッドを生成します。

    def test_add(self):

    4.tesdメソッドは、通常テストする関数またはメソッドを呼び出し、結果値selfを呼び出します。assert*()メソッドを使用して検証します。(assertEqual、assertTrue、assertFalse、assertRaises、assertRegexなどの様々なassertメソッドを使用できます)。

    def test_add(self):
        c = myCalc.add(20, 10)
        self.assertEqual(c, 30)

    5.テストクラスが完了したら、unittest。main()を呼び出してテストを実行します。


    Unit Test例

  • mycalc.py
  • def add(a, b):
        return a + b
    
    def substract(a, b):
        return a - b
  • tests.py
  • import unittest
    import mycalc
    
    class MyCalcTest(unittest.TestCase):
    
        def test_add(self):
            c = mycalc.add(20, 10)
            self.assertEqual(c, 30)
    
        def test_substract(self):
            c = mycalc.substract(20, 10)
            self.assertEqual(c, 10)
    if __name__ == '__main__':
        unittest.main()
    > python -m unittest --v
    test_add (test_my_calc.MyCalcTest) ... ok
    test_substract (test_my_calc.MyCalcTest) ... ok
    
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    2番目のプロジェクトから、すべてのプロセスでユニットテストが行われ、githubが推進されます.Rebaseと一緒にとても怖い存在ですがチャレンジしてみましょう!がんばってください.