Skip to content

テストについて

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

を実行すれば自動的にテストが開始されます

マーカー

本プロジェクトではテストの実行時間に応じてマーカーをつけて無駄に長いテストを実行しないようにしています

※引数について
実装中は--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用ファイルのいずれかが変更されたコミットに対して自動テストが走るようにし、意識しなくてもテストされている状態を作っています