問題タブ [python-click]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - フラスコクリでアプリを作成しない
ファクトリ パターンで作成されたフラスコ アプリ用のカスタム manage.py スクリプトを使用しています。
このスクリプトは、サーバーの実行とテストの実行の両方を実行できる必要があります。外部ツールを使用してテストを実行しているため、テストを実行するためのアプリを作成する必要はありません。特定のコマンドを実行しているときにのみアプリを作成するにはどうすればよいですか?
私のスクリプトは現在次のようになっています。
2 番目のグループを作成しようとしましたが、一度に「実行」できるのは 1 つのグループだけのように見えたので、これを解決する方法が正確にはわかりません。
python - クリックベースの CLI アプリケーションの単体テスト内でコンポーネントをモックする方法は?
これがここに最適なのか、Programmers Stack Exchange に最適なのかはわかりませんが、最初にここで試して、適切でない場合は別の場所にクロスポストします。
私は最近、Web サービスを開発しました。Python ベースのコマンドライン インターフェイスを作成して、より簡単に操作できるようにしようとしています。簡単なスクリプト作成の目的でしばらくの間 Python を使用してきましたが、CLI アプリケーションを含む本格的なパッケージの作成には経験がありません。
CLI アプリの作成に役立つさまざまなパッケージを調査し、clickを使用することにしました。私が懸念しているのは、実際にすべてを組み立てる前にアプリケーションを完全にテストできるように構成する方法と、クリックを使用してそれを支援する方法です。
テストに関するクリックのドキュメントを読み、API の関連部分を調べました。単純な機能のテスト (CLI に引数として渡されたときの検証--version
と動作) にはこれを使用できましたが--help
、どうすればよいかわかりません。より高度なテスト ケースを処理します。
私が今テストしようとしているものの具体的な例を提供します。アプリケーションが次のようなアーキテクチャを持つことを計画しています...
...ここで、CommunicationService
HTTP 経由で Web サービスに接続して直接通信することに関係するすべてのロジックをカプセル化します。私の CLI は、Web サービスのホスト名とポートのデフォルトを提供しますが、明示的なコマンドライン引数、構成ファイルの書き込み、または環境変数の設定によって、ユーザーがこれらをオーバーライドできるようにする必要があります。
ユーザーが異なるホスト名とポートを指定した場合、デフォルトではなくこれらの設定を使用してController
インスタンス化することをテストしたいと思います。CommunicationService
これを行う最善の方法は、次のようなものになると思います。
このケースを適切に処理する方法についてアドバイスを得ることができれば、それを取り上げて同じ手法を使用して、CLI の他のすべての部分をテスト可能にすることができるはずです。
価値があるのは、私は現在テストに pytest を使用しており、これは私がこれまでに得たテストの範囲です:
python - Sphinx を使用してクリック コマンドを文書化するにはどうすればよいですか?
Click
は、CLI アプリケーションを開発するための一般的な Python ライブラリです。Sphinx
は、Python パッケージをドキュメント化するための一般的なライブラリです。一部の人が直面した問題の 1 つは、これら 2 つのツールを統合して、クリックベースのコマンドの Sphinx ドキュメントを生成できるようにすることです。
最近この問題に遭遇しました。click.command
関数のいくつかをandで装飾し、それらに docstring を追加してから、Sphinx の拡張機能click.group
を使用してそれらの HTML ドキュメントを生成しました。autodoc
私が見つけたのは、これらのコマンドのすべてのドキュメントと引数の説明が省略されていることです。これらのコマンドはCommand
、autodoc がそれらに到達するまでにオブジェクトに変換されていたためです。
--help
CLI で実行するエンド ユーザーと、Sphinx で生成されたドキュメントを参照するユーザーの両方がコマンドのドキュメントを利用できるように、コードを変更するにはどうすればよいですか?
python - クリック コマンドから別のクリック コマンドを呼び出す
便利な機能をコマンドとして使いたい。そのために、click
ライブラリをテストしています。3 つの元の関数を定義し、次のように装飾しましたclick.command
。
このようにして、3 つのコマンドを生成add_name
し、ファイルをadd_surname
使用add_name_and_surname
してパイプすることができます。setup.py
pip install --editable .
ただし、さまざまなクリック コマンドを関数として作成する場合、解決しなければならない小さな問題が 1 つあります。
なぜ機能しないのかわかりません。このコマンドをコマンドとしてではなく関数としてadd_name_and_surname
呼び出す必要があります。そうしないと、関数をライブラリ関数とコマンドの両方として使用するという当初の目的が無効になります。add_name
add_surname
python - Python クリック引数の名前を変更する
私はこのコードの塊を持っています:
のオプション変数の名前を変更したいと思います--delete-thing
。しかし、Python では変数名にダッシュを使用できません。この種のコードを記述する方法はありますか?
したがってdelete_thing
、の値に設定されますdelete-thing