このようなことがPythonで可能かどうかはわかりませんが、可能であれば(少なくともこの例では)本当に便利です。
テスト構成をテスト コマンドとは別に保持したいテスト フレームワークがあります。これは、実際にコードを変更することなく、構成/テストを組み合わせて一致させることができるため便利です。私は基本的に、次のように、構成モジュールとテスト モジュールの名前を取得し、両方をロードして実行する短いランナー スクリプトを用意しています。
config = __import__(configmod)
test = __import__(commandsmod)
config.run(test.commands)
これに関する唯一の問題は、実際には、テスト スクリプトが構成パラメーターをある程度認識できるようにしたいということです。理想的には、test/commands モジュールで次のようなことができるようにしたいと考えています。
command1 = MyCommand(arg1, arg2, LazyArg1())
command2 = MyCommand(arg1, arg2, LazyArg2())
commands = [command1, command2]
ここで、LazyArg1 と LazyArg2 は構成モジュール (または両方の構成/コマンドをインポートするランナー モジュール) で定義されているメソッドです。これらの関数が実際に定義されるまで評価を遅らせる方法はありますか?
私はまた、同じ目的を達成するための他の方法にもオープンです. 私が持っていた他の唯一のアイデアは、構成モジュールに辞書をファイルに書き込んでから、コマンドモジュールにそれをインポートさせることでした(単に書き出すと仮定しますrepr(mydict)
)。これはあまり魅力的ではありません..うまくいきますが。