Maison >développement back-end >Tutoriel Python >Comment utiliser le module doctest pour tester des documents dans Python 3.x
Comment utiliser le module doctest pour tester des documents en Python 3.x
Introduction :
Dans le processus d'écriture de code, il est souvent nécessaire d'écrire des documents pour expliquer l'utilisation et le résultat attendu des fonctions ou des classes. Cependant, la documentation peut facilement devenir obsolète ou inexacte, ce qui peut conduire à des résultats inattendus ou erronés. Pour résoudre ce problème, Python fournit un module doctest intégré, qui vous permet d'écrire un exemple de code dans une docstring et de vérifier s'il répond aux résultats attendus une fois exécuté.
1. Introduction au module doctest
Le module doctest est un module intégré de Python qui fournit un moyen simple et fiable de tester des exemples de code. Pour ce faire, il exécute l'exemple de code donné dans la docstring et vérifie que sa sortie correspond à la sortie attendue. doctest combine l'écriture de documentation et l'écriture de tests en un seul, ce qui rend les tests plus faciles à maintenir.
2. Comment écrire un doctest
Lors de l'écriture d'un doctest, nous devons écrire l'exemple de code dans la chaîne de documentation du module, de la fonction ou de la méthode, et utiliser le balise après le résultat attendu pour représenter l’exemple de code et la sortie attendue. Par exemple, l'exemple suivant :
标记来表示示例代码和预期输出。比如以下的例子:
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
Nous pouvons utiliser la fonction testmod()
fournie par le module doctest pour exécuter doctest. Cette fonction trouvera automatiquement la docstring dans le module et y exécutera l'exemple de code, puis le comparera avec la sortie attendue.
rrreee
Après l'exécution de doctest, si la sortie de tous les exemples de codes correspond à la sortie attendue, la sortie sera vide ; si la sortie d'un exemple de code ne correspond pas à la sortie attendue, un message d'erreur sera imprimé ; .
🎜Ce qui suit est le résultat de l'exécution de l'exemple de code : 🎜rrreee🎜Dans cet exemple, nous pouvons voir qu'il existe deux cas de test (add(2, 3)
et add(10 , 5 )
) ne correspond pas au résultat attendu, donc doctest signale deux échecs. 🎜🎜5. Comment étendre doctest🎜En plus d'un exemple de code simple et du résultat attendu, doctest prend également en charge des méthodes de test plus avancées. Par exemple, nous pouvons utiliser ...
pour représenter une sortie multiligne, et #
pour représenter des commentaires, etc. Voici un exemple plus complexe : 🎜rrreee🎜Cet exemple utilise ...
pour représenter une sortie multiligne. Dans le dernier exemple, nous utilisons ...
pour représenter Il y a. plus d'éléments plus tard dans la liste, mais peu importe ce qu'ils sont. 🎜🎜VI. Conclusion🎜Cet article présente comment utiliser le module doctest pour les tests de documents dans Python 3.x. Il peut nous aider à rédiger des documents clairs et précis et à vérifier l'exactitude des documents grâce à des tests automatisés. En écrivant des cas de test, nous pouvons mieux comprendre comment une fonction ou une classe est utilisée et garantir qu'elles fonctionnent comme prévu. 🎜🎜En utilisant rationnellement le module doctest, la qualité et la maintenabilité du code peuvent être grandement améliorées. Il est recommandé, lors de l'écriture du code, d'écrire des docstrings pour les fonctions et les classes et d'y écrire des cas de test. Cela aidera à garder votre code sain et fournira un exemple de code utile que les autres pourront lire lors de la lecture de la documentation. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!