Openstackユニットテスト

2120 ワード

この文章はOpenstack novaの開発過程でどのようにユニットテストを行うかを紹介し、novaの開発環境が構築された後(環境構築は前のブログを参考にすることができる)、ソースコードを修正したら、ユニットテストを行うべきで、本文章は基本的に官方文書の翻訳であり、肝心なステップだけを少し紹介し、関連資料の後に列挙する.
1.テストの実行
前の記事では、ユニットテストの方法について説明しました.テストスクリプトを実行します.
./run_tests.sh

これによりnovaプロジェクト全体をテストし、多くの時間がかかります.このスクリプトにはnoseテストフレームワークの使い方がカプセル化されており、noseについては自分で関連リソースを検索したり、ここで理解したりすることができます.このスクリプトは、次のようなさまざまなパラメータをサポートします.
Usage: ./run_tests.sh [OPTION]...
Run Nova's test suite(s)

  -V, --virtual-env        Always use virtualenv.  Install automatically if not present
  -N, --no-virtual-env     Don't use virtualenv.  Run tests in local environment
  -s, --no-site-packages   Isolate the virtualenv from the global Python environment
  -r, --recreate-db        Recreate the test database (deprecated, as this is now the default).
  -n, --no-recreate-db     Don't recreate the test database.
  -x, --stop               Stop running tests after the first error or failure.
  -f, --force              Force a clean re-build of the virtual environment. Useful when dependencies have been added.
  -p, --pep8               Just run pep8
  -P, --no-pep8            Don't run pep8
  -c, --coverage           Generate coverage report
  -h, --help               Print this usage message
  --hide-elapsed           Don't print the elapsed time for each test along with slow test list

パラメータの詳細については、ここをクリックしてください.
上はプロジェクト全体のテストです.モジュールまたは機能のみをテストしたい場合は、対応するテストサブセットを実行できます.
./run_tests.sh scheduler
#  nova/tests/scheduler

上記のコードはnovaスケジューラモジュールのテストであり、モジュール内の具体的なクラスまたは方法をテストすることもできます.以下のようにします.
./run_tests.sh test_libvirt:HostStateTestCase

# libvirt HostStateTestCase 

./run_tests.sh test_utils:ToPrimitiveTestCase.test_dict

# ToPrimitiveTestCase.test_dict 

2.制御出力
デフォルトでは、テストを実行すると、コンソールに大量のテスト情報が出力されます.これらの出力で目的の結果を見つけるのは難しいです.
ファイルにリダイレクトするのは、依然として便利ではありません.これにより、テストの出力結果を制御する必要があります.テストを実行するときにパラメータを追加すればいいです.
--nologcapture

とりあえずここまで書いておきますが、ここは公式指導です.