docs: READMEにテストについて追記した
This commit is contained in:
parent
1151c015ca
commit
a003f0b96b
17
ecs/crm-datafetch/.env.example
Normal file
17
ecs/crm-datafetch/.env.example
Normal 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
|
||||
@ -12,6 +12,6 @@
|
||||
" $3",
|
||||
"\"\"\""
|
||||
],
|
||||
"description": "Test docstring (User Snipets)"
|
||||
"description": "Test docstring (User Snippets)"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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...
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user