Gibt es eine Möglichkeit, doctest und sphinx zum Testen und Dokumentieren von Befehlszeilenanwendungen zu verwenden?

8

Ich habe ein Python-Modul, für das ich ein Tutorial schreibe, in dem ich Sphinx einschließlich Doc-Tests verwende.

Dieses Modul enthält einige Hilfsprogramme.

Ich möchte diese Hilfsprogramme in die Dokumentation aufnehmen und lassen Sie doctest überprüfen, dass die Standardausgabe zwischen der aktuellen Programmversion und der Dokumentation synchron ist.

Ich nehme an, ich kann das sh-Modul verwenden oder popen, um die Standardausgabe eines bestimmten Programms zu überprüfen, aber ich bevorzuge, dass diese Tricks nicht in den Dokumenten erscheinen, sonst werden Nicht-Programmierer-Benutzer mit Sicherheit verloren.

Gibt es einen Weg, das zu erreichen?

    
ascobol 03.04.2014, 16:24
quelle

1 Antwort

1

Das Modul doctest prüft nur die Anweisungen von der interaktiven Python-Eingabeaufforderung aus ausgeführt werden.

Befehlszeilentools können über die interaktive Python-Eingabeaufforderung mit dem Unterprozess Modul:

%Vor%

Es gibt wahrscheinlich einige Möglichkeiten, doctest oder sphinx zu hacken, um das, was Sie wollen, direkter zu bekommen, aber diese Technik verwendet die angekündigten APIs für doctest, sphinx und subprocess genau so, wie sie entwickelt wurden (doctest ist dafür ausgelegt interaktive Prompt-Sitzungen in Docstrings wiedergeben, und Subprozess wurde entwickelt, um Befehlszeilen-Tools direkt von Python auszuführen und ihre Ausgabe zu erfassen.)

  

Ich nehme an, ich kann das sh-Modul benutzen oder poppen, um den Standard zu überprüfen   Ausgabe eines bestimmten Programms, aber ich bevorzuge, dass diese Tricks nicht zeigen   in die Docs, oder auch Nicht-Programmierer Benutzer werden sicherlich   verloren.

Zwei Gedanken: Erstens können die Details dieser Anrufe meist in einer Hilfsfunktion versteckt werden, um die Ablenkung zu minimieren. Zweitens, wenn Sie Befehlszeilenprogramme von Python aufrufen müssen, ist es kein Trick, popen oder Unterprozess zu verwenden, da dies die speziell für diese Aufrufe entwickelten Tools sind aus Python.

    
Raymond Hettinger 09.07.2017 23:45
quelle