私はPythonに非常に慣れていないため、いくつかのことについて確信が持てません。
- クラスは個別のファイルにすべきですか?
- スタンドアロン スクリプトにはメイン メソッドがありますか? もしそうなら、私は呼び出されていないメインメソッドを持っているので、これはどのように機能しますか
- 単体テストディレクトリは通常どこに配置され、テスト対象のファイルをどのように「含める」のですか?
私はPythonに非常に慣れていないため、いくつかのことについて確信が持てません。
ここでカバーする多くの根拠があります。これらのポイントを個々の質問/クエリに分割することで、より適切にサービスを提供できる場合があります:)
クラスを不必要に個々のファイルに分割することには抵抗があります。一部のクラスは他のクラスに大きく依存している可能性があり、私は (個人的には) それらを同じファイルに保持することを好みます。クラスごとに個別のファイルを作成するのではなく、機能に基づいてファイルを作成するのが最善の慣例だと思います。
Flask や Jinja2 などの Pocoo プロジェクトから多くのインスピレーションを得ています。Jinja2 ソースは、ファイル内の特定の関連クラスを「バンドル」する優れた例を提供します: Github
通常、スタンドアロン スクリプトは , のようなものを使用してif __name__ == '__main__'
、 が直接実行されるかどうかを確認し (例: python scriptname.py
)、通常は後で関数を実行しmain()
ます (私の間違いを訂正してくれた Mike に感謝します)。
呼び出されないという問題を解決するのに役立つようにmain
、使用しようとしているコードを表示することをお勧めします。
これを行うにはさまざまな方法がありますが、規則はプロジェクトtests
内test
のtestsuite
ディレクトリにあるようです。この質問の後半は非常にややこしくなります。なぜなら、Python のインポートは、Python プロジェクトの構造/タイプ (Python パッケージですか? スクリプトのスタンドアロン コレクションですか?) とPYTHONPATH
.
このSO 投稿は、テストをどこに配置するかを検討するための出発点としては素晴らしい場所ですが、一般的な答えは「あなた/あなたのチームにとって最適な場所」のようです:)。
少し関連するメモとして、Python でのテストから多くのボイラープレートが削除されるため、 Noseテスト フレームワークを調べることもお勧めします。
What does <if __name__==“__main__”:> do?
import directoryname.module.
. でクラスをインポートできますfrom directoryname.module import ClassName
。