-
Notifications
You must be signed in to change notification settings - Fork 0
テストについて
Kohei Noda edited this page Feb 8, 2024
·
3 revisions
新機能作成時は単体テストを書いて小さい機能単位で細かくテストするような開発スタイルをお勧めします。
単体テストのやり方についてはこのプロジェクトの単体テストのディレクトリや単体テストのチュートリアル的記事を参照したり、
単体テストについて検索して学ぶことをお勧めします
- このプロジェクトでは、CASPT2エネルギーに一定以上の誤差があるかどうかのテストをしています。誤差は±10-8 a.u.まで許しています
- 新しい機能については、機能レベルの単体テストも作成しています
- 実行するにはpytestをインストールする必要があります
- pytestのインストールコマンドは以下の通りです(ただしpython 3.6以上が必要です)
python -m pip install pytest
- pytestを導入したら
pytest --dev
を実行すれば自動的にテストが開始されます
本プロジェクトではテストの実行時間に応じてマーカーをつけて無駄に長いテストを実行しないようにしています
- 実行したくないテストがある場合は--ignore=path/to/ignoreで指定してください、/path/to/ignore以下のテストが無視されます
- テストは軽い順に@pytest.mark.dev、マーカーなし、@pytest.mark.slowonlyというマーカーで指定されています
- pytestに引数をつけると、走らせるテストの制御ができます。引数は以下の通りです
※引数について
実装中は--devでテストを使って効率的にテストと開発のループを行い
pull request前などのときに、引数なしのテストや--allのテストをローカルでする
等といった開発のやり方をお勧めしますが、実装のやり方は個々人に任せますGitHub上ではGithub Actionsを用いて
- mainブランチ以外へのpush時に引数なし、
- pull request時に--slowonly、
- mainブランチへのpush時に--all
を使ってテストを行うようにしています
# @pytest.mark.devがついているテストのみ実行
pytest --dev
# マーカーなしのテストと@pytest.mark.devがついているテストのみ実行
pytest
# すべてのテストを実行
pytest --all
# @pytest.mark.slowonlyがついているテストのみ実行
pytest --slowonly
-
mpiifortやmpiifx,mpif90,mpifortなどの並列コンパイラでかつビルド時に--mpiオプションを有効にした場合、MPI並列用テストを行うことを推奨します。コマンドは以下の通りです
pytest --dev --mpi=4
-
Github Actionsについて、このサービスを使うことでアップロード(push)された*.f90,*.F90,*.cmake,CMakeLists.txt,*.py,Github Actions用ファイルのいずれかが変更されたコミットに対して自動テストが走るようにし、意識しなくてもテストされている状態を作っています
- .github/workflows/ci.ymlにGithub Actions用の設定があります