Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das doctest-Modul zum Testen von Dokumenten in Python 3.x

So verwenden Sie das doctest-Modul zum Testen von Dokumenten in Python 3.x

王林
王林Original
2023-07-30 17:03:20920Durchsuche

So verwenden Sie das Doctest-Modul zum Testen von Dokumenten in Python 3.x

Einführung:
Beim Schreiben von Code ist es häufig erforderlich, Dokumente zu schreiben, um die Verwendung und die erwartete Ausgabe von Funktionen oder Klassen zu erläutern. Allerdings kann die Dokumentation leicht veraltet oder ungenau werden, was zu unerwarteten oder fehlerhaften Ergebnissen führen kann. Um dieses Problem zu lösen, bietet Python ein integriertes Modul doctest, mit dem Sie Beispielcode in einen Docstring schreiben und prüfen können, ob er bei der Ausführung die erwarteten Ergebnisse erfüllt.

1. Einführung in das Doctest-Modul
Das Doctest-Modul ist ein integriertes Modul von Python, das eine einfache und zuverlässige Möglichkeit zum Testen von Codebeispielen bietet. Dazu wird der in der Dokumentzeichenfolge angegebene Beispielcode ausgeführt und überprüft, ob seine Ausgabe mit der erwarteten Ausgabe übereinstimmt. doctest vereint das Schreiben von Dokumentation und das Schreiben von Tests in einem und erleichtert so die Wartung von Tests.

2. So schreiben Sie einen Doctest
Beim Schreiben eines Doctests müssen wir den Beispielcode in die Dokumentationszeichenfolge des Moduls, der Funktion oder der Methode schreiben und den verwenden Tag nach dem erwarteten Ergebnis, um Beispielcode und erwartete Ausgabe darzustellen. Zum Beispiel das folgende Beispiel: 标记来表示示例代码和预期输出。比如以下的例子:

def add(a, b):
    """
    计算两个数的和
    
    示例:
    >>> add(2, 3)
    5
    
    >>> add(10, 5)
    15
    """
    return a + b

三、如何执行 doctest
我们可以使用 doctest 模块提供的 testmod() 函数来执行 doctest。这个函数会自动查找模块中的文档字符串并执行其中的示例代码,然后和预期输出进行比对。

import doctest

doctest.testmod()

四、运行结果
执行 doctest 后,如果所有示例代码的输出与预期输出相符,那么输出为空;如果有示例代码的输出与预期输出不符,那么会打印出错误信息。

下面是示例代码的运行结果:

**********************************************************************
File "example.py", line 5, in __main__.add
Failed example:
    add(2, 3)
Expected:
    5
Got:
    6
**********************************************************************
File "example.py", line 9, in __main__.add
Failed example:
    add(10, 5)
Expected:
    15
Got:
    16
**********************************************************************
1 items had failures:
   2 of   2 in __main__.add
***Test Failed*** 2 failures.

在这个例子中,我们可以看到有两个测试用例(add(2, 3)add(10, 5))的结果与预期输出不符,因此 doctest 报告了两个失败。

五、如何扩展 doctest
除了简单的示例代码和预期输出之外,doctest 还支持更多高级的测试方式。比如,我们可以使用 ... 来表示多行输出,使用 # 来表示注释等。下面是一个更复杂的示例:

def average(numbers):
    """
    计算列表中数字的平均值
    
    示例:
    >>> average([1, 2, 3, 4, 5])
    3
    
    >>> average([10, 20, 30])
    20
    
    >>> average([])
    0
    
    >>> average([1, 2, 3, 4, 5, ...])
    3
    """
    if len(numbers) == 0:
        return 0
    return sum(numbers) / len(numbers)

这个示例使用了 ... 来表示多行输出,在最后一个示例中我们用 ...rrreee

3. So führen Sie doctest aus

Wir können die vom doctest-Modul bereitgestellte Funktion testmod() verwenden, um doctest auszuführen. Diese Funktion findet automatisch die Dokumentzeichenfolge im Modul, führt dort den Beispielcode aus und vergleicht ihn dann mit der erwarteten Ausgabe.
rrreee

4. Ergebnisse ausführen

Wenn die Ausgabe aller Beispielcodes mit der erwarteten Ausgabe übereinstimmt, ist die Ausgabe leer. Wenn die Ausgabe eines Beispielcodes nicht mit der erwarteten Ausgabe übereinstimmt, wird eine Fehlermeldung gedruckt .

🎜Das Folgende ist das Ergebnis der Ausführung des Beispielcodes: 🎜rrreee🎜In diesem Beispiel können wir sehen, dass es zwei Testfälle gibt (add(2, 3) und add(10 , 5 )) entspricht nicht der erwarteten Ausgabe, daher meldet doctest zwei Fehler. 🎜🎜5. So erweitern Sie doctest🎜Zusätzlich zum einfachen Beispielcode und der erwarteten Ausgabe unterstützt doctest auch fortgeschrittenere Testmethoden. Beispielsweise können wir ... verwenden, um eine mehrzeilige Ausgabe darzustellen, und #, um Kommentare usw. darzustellen. Hier ist ein komplexeres Beispiel: 🎜rrreee🎜Dieses Beispiel verwendet ..., um eine mehrzeilige Ausgabe darzustellen. Im letzten Beispiel verwenden wir ..., um „There are“ darzustellen Weitere Elemente finden Sie später in der Liste, es spielt jedoch keine Rolle, um welche es sich handelt. 🎜🎜VI. Fazit🎜Dieser Artikel stellt vor, wie man das Doctest-Modul zum Testen von Dokumenten in Python 3.x verwendet. Es kann uns helfen, klare und genaue Dokumente zu schreiben und die Richtigkeit der Dokumente durch automatisierte Tests zu überprüfen. Durch das Schreiben von Testfällen können wir besser verstehen, wie eine Funktion oder Klasse verwendet wird, und sicherstellen, dass sie wie erwartet funktionieren. 🎜🎜Durch den rationalen Einsatz des Doctest-Moduls können die Codequalität und die Wartbarkeit erheblich verbessert werden. Es wird empfohlen, beim Schreiben von Code Dokumentzeichenfolgen für Funktionen und Klassen zu schreiben und darin Testfälle zu schreiben. Dies trägt dazu bei, dass Ihr Code solide bleibt, und stellt nützlichen Beispielcode bereit, den andere beim Lesen der Dokumentation lesen können. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das doctest-Modul zum Testen von Dokumenten in Python 3.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn