Python
 Computer >> コンピューター >  >> プログラミング >> Python

doctestモジュールを使用したPythonでのテスト


docstringを知っています Pythonの関数とクラスに関する追加情報を提供します。 doctestを使用した関数のテストにも使用できます。 モジュール。 doctest モジュールは>>>で始まるコードを実行し、期待される出力と比較します。

以下の手順に従って、doctest。で関数を記述します。

  • doctestをインポートします モジュール。

  • docstringを使用して関数を記述します。 docstring内に、同じ関数をテストするために次の2行を記述します。

    • >>> function_name(* args)。

    • 期待される出力。

  • 機能コードを記述します。

  • ここで、テストのためにdoctest.testmod(name =function_name、verbose =True)関数を呼び出します。詳細をFalseに設定し、すべてのテストに合格した場合、テスト結果を確認できません。 Trueに設定することをお勧めします。

doctestを使って簡単な関数を書いてみましょう。

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   15
   >>> numbers_sum(6, 7, 8)
   21
   """
   return sum(args)
# invoking the testmod function
doctest.testmod(name='numbers_sum', verbose=True)
>

上記のコードを実行すると、次の結果が得られます。

Trying:
numbers_sum(1, 2, 3, 4, 5)
Expecting:
15
ok
Trying:
numbers_sum(6, 7, 8)
Expecting:
21
ok
1 items had no tests:
numbers_sum
1 items passed all tests:
2 tests in numbers_sum.numbers_sum
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
TestResults(failed=0, attempted=2)

出力が表示されている場合は、各テストの後にokという単語があります。つまり、期待される出力と実際の出力が一致します。出力の最後でテスト結果を確認できます。

テストが失敗したときに何が起こるか見てみましょう。間違った出力で同じ例を実行します。

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   10
   >>> numbers_sum(6, 7, 8) 23
   """ return sum(args)
# invoking the testmod function
doctest.testmod(name='numbers_sum', verbose=True)
>

出力

上記のプログラムを実行すると、次の結果が得られます。

Trying:
   numbers_sum(1, 2, 3, 4, 5)
Expecting:
   10
**********************************************************************
File "__main__", line 10, in numbers_sum.numbers_sum
Failed example:
   numbers_sum(1, 2, 3, 4, 5)
Expected:
   10
Got:
   15
Trying:
   numbers_sum(6, 7, 8)
Expecting:
   23
**********************************************************************
File "__main__", line 12, in numbers_sum.numbers_sum
Failed example:
   numbers_sum(6, 7, 8)
Expected:
   23
Got:
   21
1 items had no tests:
   numbers_sum
**********************************************************************
1 items had failures:
   2 of 2 in numbers_sum.numbers_sum
2 tests in 2 items.
0 passed and 2 failed.
***Test Failed*** 2 failures.
TestResults(failed=2, attempted=2)

テスト結果が表示された場合、2つは失敗しています。 予想されるを確認することもできます および実際の 出力に出力します。

結論

チュートリアルで疑問がある場合は、コメントセクションでそれらについて言及してください。


  1. Unittestを使用したPythonでのユニットテスト

    この記事では、Python 3.xで利用可能な単体テストモジュールを使用して、ソフトウェアテストの基本について学習します。またはそれ以前。 自動化、テストのセットアップコードと終了コードの共有、およびすべてのフレームワークの独立したテストが可能になります。 単体テストでは、さまざまなオブジェクト指向の概念を使用します。ここでは、主に使用されるいくつかの概念について説明します。 テストケース −これは、特定の入力セットに従った応答固有の基本クラスです。単体テストの基本クラス、つまり「 TestCase 」を使用して、この操作を実装します。 テストスイート −テストケースをまとめ

  2. Pythonのissubset()関数

    この記事では、Python標準ライブラリで利用可能なissubset()関数の実装と使用法について学習します。 issubset()メソッドは、セットのすべての要素が別のセットに存在する場合(引数として渡される場合)はブール値のTrueを返し、それ以外の場合はブール値のFalseを返します。 下の図では、BはAのサブセットです。AとBが同一のセットである場合、AはBの適切なサブセットであることを意味します。これは、両方のセットに同じ要素が含まれていることを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値 boolean True/