2017-01-03 6 views
1

皆さん、幸せな一年をお祈りします!私は新年度に単体テストを追加したいが、それをより簡単に処理する方法は? --test-enable--stop-after-initコマンドラインパラメータを使ってモジュールを更新している間にテストを実行することが分かった。私は--test-file parameterについても読んでいますが、うまくいきません。このパラメータはドキュメントにも記述されていません。モジュールの単体テストを効率的に実行する

TDD(テスト駆動型開発)はどうしますか?これを行うには、テストをすばやく実行できる必要があります。モジュール全体をすべての依存関係でテストする必要があるため、頻繁にテストを書くのは実際的ではありません。単一のユニットテストケースを実行するには?

答えて

1

「単体テストケースを実行」から自分の質問を編集しました。このコマンドは私のために働きます:

python ./odoo.py -i module_to_test --log-level=test -d minimal_database --test-enable --stop-after-init 

これはdanideeが回答したものと非常に似ています。

しかし、解決策は、これは予想外にすべての依存モジュールのすべてのテストを実行し、それがあまりにも長い間実行すること、何でも他にないのでないは、--test-fileパラメータを使用することのようです。

解決策のもう一つの部分は、最小限のデータベースを使用して、テストするモジュールとその依存関係をインストールすることです。

これで、テストされたコードが依存モジュールのオブジェクトを使用していても、上記のコマンドを実行するのに数秒しかかかりませんでした。私がモジュールを更新するたびに、テストを実行している間に、より速く効率的になるのを防ぐことができたら...

+0

解決策を見つけられたらうれしいです。 Odooのアップデートシステムと適切な移行の欠如は、多くのことを難しくし、時には不可能にします – danidee

1

それは...ほとんどのモジュールはまだようにいくつかの他のモジュールに依存し、他のモジュールに依存するためOdooとTDDを行うには

本当に難しいですしかし、どのような私の作品は、すべてのインストールカスタムモジュールを持つことです私が作成した他のカスタムモジュール

この同じモジュールには、私がOdooで行った「何かカスタム」のテストも含まれています。あなたはモジュール自体の中に各モジュールテストを配置することができますが、何らかのテストが何の理由もなく実行されなかったときにいくつかの問題がありました。だから私は1つのモジュールにすべてを配置することにした

私はいつでも新しいコミットを押す。これは、それは私の本番環境のクローンだ(私は本当のに対してテストすることができ、これを行う前に、私は(私のモジュールがall_modules命名されたと仮定した場合)テストを実行するために使用するコマンド

python odoo.py --addons=addons_path -i all_modules --log-level=test -d Test_Database --test-enable --xmlrpc-port=80xx --stop-after-init 

で、私はすでにデータベース(Test_Database)を持っていますデータ)を作成します。

デプロイメントの場合は、rsyncを使用してファイルをコピーしてください。

私のテストでは、(〜5分)私はクローン化されたDBに対してテストしていますので、また、私は私が私が知っている

を構築したカスタムモジュールのテストを実行しているので、これは標準ではありません適度に高速ですTDDですが、Odooはソフトウェア開発の多くのパターンに適合しておらず、ほとんどの場合、バランスを取って何が効果的であるかを知る必要があります。

個人的に私はrun-botがあまりにも複雑で飢えていることがわかりました。

PS:Seleniumテストをお勧めします。

+0

どのようにOdooが 'コア'モジュールでテストを実行するのを防ぐには?私は自分のカスタムモジュール( 'all_modules')で** **テストをしたいだけです。 –

関連する問題