docs: READMEにテストについて追記した

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2022-08-02 16:19:32 +09:00
parent 1151c015ca
commit a003f0b96b
3 changed files with 90 additions and 1 deletions

View File

@ -0,0 +1,17 @@
CRM_AUTH_DOMAIN=test
CRM_USER_NAME=test
CRM_USER_PASSWORD=test
CRM_USER_SECURITY_TOKEN=test
CRM_CONFIG_BUCKET=test
CRM_BACKUP_BUCKET=test
IMPORT_DATA_BUCKET=test
OBJECT_INFO_FOLDER=test
OBJECT_INFO_FILENAME=test
PROCESS_RESULT_FOLDER=test
PROCESS_RESULT_FILENAME=test
LAST_FETCH_DATE_FOLDER=test
CRM_IMPORT_DATA_FOLDER=test
LAST_FETCH_DATE_BACKUP_FOLDER=test
RESPONSE_JSON_BACKUP_FOLDER=test
CRM_IMPORT_DATA_BACKUP_FOLDER=test
TZ=Asia/Tokyo

View File

@ -12,6 +12,6 @@
" $3",
"\"\"\""
],
"description": "Test docstring (User Snipets)"
"description": "Test docstring (User Snippets)"
}
}

View File

@ -67,3 +67,75 @@
- 環境変数が必要な場合、直接設定するか、上記JSONの`"envFile"`に設定されたパスに`.env`ファイルを作成し、環境変数を入力する
- キーボードの「F5」キーを押して起動する
- デバッグモードで実行されるため、適当なところにブレークポイントを置いてデバッグすることができる
## 単体テストについて
### 前提
- Pytestを使用する
- <https://pypi.org/project/pytest/>
- カバレッジも取得したいため、pytest-covも使う
- <https://pypi.org/project/pytest-cov/>
- レポートを出力するため、pytest-htmlを使う
- <https://pypi.org/project/pytest-html/>
- S3をモック化したいため、motoをつかう
- <https://www.learnaws.org/2020/12/01/test-aws-code/>
- CRMはテスト用の環境を使いたいため、newdwh_opeのアドレスでDeveloper組織を登録する
### テスト環境構築
- Pipenvの仮想環境下で、以下のコマンドを実行する
```sh
pipenv install --dev
```
- `.env.example`をコピーし、同じ階層に`.env`を作成する
- `.env`の以下に示す環境変数の値をDeveloper組織のものに書き換える
- CRM_AUTH_DOMAIN
- CRM_USER_NAME
- CRM_USER_PASSWORD
- CRM_USER_SECURITY_TOKEN
- 以下のコマンドを実行して単体テストを起動する
```sh
pipenv run test:cov
```
#### 各コマンドの説明
- `pipenv run test`
- pytestを使用してテストを実行する
- `tests`フォルダに配置されているテストモジュールを対象に、単体テストを実行する
- `pipenv run test:cov`
- pytestのテスト終了時にカバレッジを収集する
- 標準出力とカバレッジファイル(`.coverage`)に出力される
- `pipenv run test:report`
- pytestのテスト終了時にテスト結果をHTMLで出力する
- `.report/test_result.html`が出力される
## 単体テストの追加方法
- `tests`フォルダ内に、`src`フォルダの構成と同じようにフォルダを作り、`test_<テスト対象のモジュール名.py>`というファイルを作成する
- 例:`src/aws/s3.py`をテストする場合は`tests/aws/test_s3.py`というファイル名にする
- テスト関数はクラスにまとめて、テストスイートとする
- テスト関数にはドキュメントコメントを付け、テスト観点・準備作業・期待値を記載すること
- 上記が出力されるスニペットを用意してある。
- `""""""`と入力し、「Test docstring (User Snippets)」を選択し、ドキュメントコメントを挿入できる
```python
from src.aws.s3 import S3Resource
class TestS3Resource:
def test_get_object(self, s3_test, s3_):
"""
Cases:
S3からオブジェクトが取得できるか
Arranges:
- S3をモック化する
- 期待値となるファイルを配置する
Expects:
オブジェクトが取得でき、期待値と正しいこと
"""
# more code...
```