Je pense que je manque quelque chose à propos de l'extension Sphinx pour DOCTest.
L'exemple typique de la documentation est le suivant: p> n'est pas un moyen de laisser Sphinx génère la sortie (ici: Aussi loin que j'ai compris, il est possible de courir: p> qui a pour effet de tester les extraits de code et de comparer la sortie réelle avec la sortie attendue. Par exemple, si vous avez p> 1 code>) automatiquement? p>
.. doctest::
>>> print 1
1
>>> print [2*x for x in range(3)]
[0,2,4]
3 Réponses :
Je dois fortement (mais gentiment) conseiller contre strong> ce que vous essayez de faire. p>
Ce que vous demandez est contre la "partie de test" du Module Doctest : p>
Le module Doctest recherche des morceaux de texte qui ressemblent à des sessions de Python interactifs, puis exécutes ces sessions pour vérifier qu'ils fonctionnent exactement comme indiqué. P>
blockQuote>
Ces tests ont des raisons d'être si vous em> écrivez l'entrée et de la sortie attendue et laissez Python vérifier si la sortie attendue correspond à la sortie réelle. P>
Si vous laissez Python produira la sortie attendue, bien .. il ne sera plus attendu em> (par l'utilisateur / auteur), de sorte que les Doctests ne manqueront jamais, d'où ces tests seront inutiles. p>
J'ai trouvé Cette vidéo sur le développement axé sur les tests très intéressants, Peut-être que cela pourrait vous intéresser si vous voulez en savoir plus sur cet argument. P>
Merci ! Je me rends compte que j'ai mal compris le but de cette extension Sphinx. Je pense que c'était plus un moyen d'écrire le doc de manière plus rapide, mais je comprends maintenant toute l'idée derrière la doctest.
La demande de l'OP était très raisonnable et constitue une caractéristique commune dans la plupart des cadres de test d'entrée-sortie (généralement appelé «accepter» la sortie d'un test). Notez que l'OP a demandé un moyen de mettre à jour les fichiers source i> (docstrings dans les programmes Python et les blocs de doctest dans Sphinx), pas les sorties générées par Sphinx (HTML ou Latex). Cela serait très utile d'avoir comme moyen de mettre à jour automatiquement les tests et les exemples obsolètes.
Voici une suggestion sur la façon dont vous pourriez réaliser ce que je soupçonne que vous pourriez rechercher: p>
Doug Hellmann a écrit un article intéressant appelé Écrire une documentation technique avec Sphinx, Paver et Cog . Il a Il y a aussi un Extension Sphinx apportée appelée Autorun qui peut exécuter du code dans une spéciale
Runblock code> directive et joignez la sortie à la documentation. P>
Cette fonctionnalité est disponible dans le cadre de Quote: P>
Pytest-Accept est un plugin pytest pour la mise à jour automatique du Doctest
les sorties. Il exécute des doctestes, observe les sorties générées et écrit
aux sorties documentées des doctestes. P>
Il est conçu pour quelques cas d'utilisation: P>
pytest-accepter code> et l'extension de
Pytest code>: https://github.com/max-sixty/pytest-Accept p>