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

インタラクティブなPythonの例をテストする(doctest)


Pythonの標準ディストリビューションには「doctest」モジュールが含まれています。このモジュールの機能により、インタラクティブなPythonセッションのように見えるテキストを検索し、これらのセッションを実行して、表示されているとおりに機能するかどうかを確認できます。これらの例は、クラス、モジュール、または関数のdocstring式から抽出されています。 Doctestは、付随するテキストファイルのテキストファイルから実行することもできます。

Pythonでは、「docstring」は、クラス、関数、またはモジュールの最初の式として表示される文字列リテラルです。スイートの実行時には無視されますが、コンパイラによって認識され、囲んでいるクラス、関数、またはモジュールの__doc__属性に入れられます。

docstringは通常、Pythonコードのさまざまな部分の使用例を説明するために配置されます。 doctestモジュールを使用すると、これらのdocstringがコードの断続的なリビジョンで最新であることを確認できます。

次のコードでは、階乗関数が使用例を散在させて定義されています。使用例が正しいかどうかを確認するには、doctestモジュールでtestmod()関数を呼び出します。

def add(a,b):
'''
>>> add(10,20)
30
>>> add('aaa','bbb')
'aaabbb'
>>> add('aaa',20)
Traceback (most recent call last):
...
TypeError: must be str, not int
'''
return a+b

まず、上記のスクリプトをmytest.pyとして入力して保存し、コマンドラインからこのスクリプトを実行してみてください。

Python mytest.py

例が失敗しない限り、出力は表示されません。次に、コマンドラインを

に変更します。
Python mytest.py –v
これで、コンソールに次の結果が表示されます-

F:\Python36>python mytest.py -v
Trying:
add(10,20)
Expecting:
30
ok
Trying:
add('aaa','bbb')
Expecting:
'aaabbb'
ok
Trying:
add('aaa',20)
Expecting:
Traceback (most recent call last):
...
TypeError: must be str, not int
ok
1 items had no tests:
__main__
1 items passed all tests:
3 tests in __main__.add
3 tests in 2 items.
3 passed and 0 failed.
Test passed.
テキストファイルの例を確認する

doctestのもう1つの簡単なアプリケーションは、テキストファイルでインタラクティブな例をテストすることです。これは、testfile()関数を使用して実行できます。

次のテキストは、「example.txt」という名前のテキストファイルに保存されます

Using ''add''
-------------------
This is an example text file . First import
''add'' from the ''mytest'' module:
>>> from mytest import add
>>> add(10,20)
30
から ファイルの内容はdocstringとして扱われます。テキストファイルの例を確認するには、doctestモジュールのtestfile()関数を使用します。

def add(a,b):
return a+b
if __name__ == "__main__":
import doctest
doctest.testfile("example.txt")
  • testmod()と同様に、testfile()は、例が失敗しない限り何も表示しません。例が失敗した場合は、失敗した例と失敗の原因がtestmod()と同じ形式でコンソールに出力されます。

  • ほとんどの場合、インタラクティブなコンソールセッションのコピーアンドペーストは正常に機能しますが、doctestは特定のPythonシェルの正確なエミュレーションを実行しようとはしていません。

  • 期待される出力は、コードを含む最後の「>>>」または「...」行の直後に続く必要があり、期待される出力(存在する場合)は、次の「>>>」またはすべて空白の行まで拡張されます。

    >
  • 期待される出力にすべて空白の行を含めることはできません。このような行は、期待される出力の終了を示すために使用されるためです。期待される出力に空白行が含まれている場合は、doctestの例にを入れて、それぞれ空白行が期待される場所に配置します。

この記事では、doctestモジュールのtestmod()関数とtestfile()関数について説明しました。


  1. Pythontkinterボタンにスタイルを追加

    Tkinterは、Pythonに基づくGUIプログラムの作成を強力にサポートしています。フォント、サイズ、色などに基づいて、Tkinterキャンバス上のボタンのスタイルを設定するさまざまな方法を提供します。この記事では、キャンバス上の特定のボタンまたは一般的なすべてのボタンにスタイルを適用する方法を説明します。 特定のボタンに適用する キャンバスに2つのボタンがあり、最初のボタンにのみスタイルを適用したい場合を考えてみましょう。構成の一部として、フォントと前景色とともにW.TButtonを使用します。 例 from tkinter import * from tkinter.ttk impo

  2. Pythonにパスを追加する方法は?

    Pythonは、1991年に最初にリリースされたプログラミング言語です。複数のオペレーティングシステムで使用できるアプリケーションがあり、開発者はその上で新しいコードを記述および開発できます。 Pythonは、開発者と広範なサポートに伴う可能性が非常に大きいため、最も広く使用されているプログラミング言語の1つです。 ユーザーが「python」という単語を入力するたびに 」コマンドプロンプトでエラーが返されます。正しく機能するには、パス全体を指定する必要があります。これは、コマンドプロンプトが出力をロードするために「python.exe」を見つける必要があり、パス全体が指定されていない限り、