Pytestee¶
Pytesteeは、pytest形式のテストコードの品質を向上させるためのCLIツールです。ルールベースのアプローチでテストの品質を評価し、より良いテストコードの作成をサポートします。
主要機能¶
Pytesteeは以下の領域でテストの品質をチェックします:
🔍 パターン検出¶
- AAA パターン (Arrange, Act, Assert)
- GWT パターン (Given, When, Then)
- コメントベース、構造的、論理的な検出手法
⚡ アサーション分析¶
- アサーション数の適切性
- アサーション密度の評価
- 不足・過多の検出
🛡️ 脆弱性検出¶
- プライベートメンバーへのアクセス
- 時間・ランダム性依存の検出
- グローバル状態の変更
🎯 エッジケース網羅性¶
- 数値・コレクション・文字列のエッジケース
- 正常・異常ケースの比率分析
- 全体的な網羅性スコア
📝 命名規則¶
- 日本語テストメソッド名の推奨
クイックスタート¶
インストール¶
基本的な使用方法¶
設定例¶
ルール体系¶
Pytesteeは以下のカテゴリでルールを組織化しています:
| カテゴリ | 説明 | 例 |
|---|---|---|
| PTCM | コメントベースパターン | AAA/GWT コメントの検出 |
| PTST | 構造的パターン | 空行による構造分離 |
| PTLG | 論理的パターン | AST解析によるパターン検出 |
| PTAS | アサーション | 数・密度・適切性の評価 |
| PTNM | 命名規則 | 日本語メソッド名の推奨 |
| PTVL | 脆弱性検出 | 依存性・状態変更の検出 |
| PTEC | エッジケース | 網羅性とバランスの分析 |
アーキテクチャ¶
Pytesteeは以下のClean Architectureレイヤーで構成されています:
src/pytestee/
├── domain/ # ビジネスロジック
├── usecases/ # アプリケーションロジック
├── adapters/ # 外部インターフェース
│ ├── cli/ # CLIコマンド
│ ├── presenters/ # 出力フォーマット
│ └── repositories/ # ファイルシステム
├── infrastructure/ # 具象実装
│ ├── checkers/ # 品質チェッカー
│ ├── rules/ # ルール実装
│ ├── config/ # 設定管理
│ └── ast_parser.py # AST解析
└── registry.py # 依存性注入
良いテストの例¶
推奨されるテストパターン
def test_ユーザー作成():
"""ユーザー作成機能のテスト。"""
# Arrange
name = "田中太郎"
email = "tanaka@example.com"
# Act
user = User.create(name, email)
# Assert
assert user.name == name
assert user.email == email
assert user.is_valid()
このテストは以下の点で優れています:
- ✓ 日本語メソッド名 で可読性が高い
- ✓ AAAパターン で構造が明確
- ✓ 適切なアサーション数 で検証が十分