Getting Started with Pytestee¶
Pytesteeは、pytest形式のテストコードの品質をチェックするCLIツールです。Clean Architectureの原則に基づいて構築されており、ルールベースのアーキテクチャによってテストの品質を評価します。
インストール¶
要件
Python 3.9以上が必要です
基本的な使用方法¶
単一のテストファイルをチェック¶
ディレクトリ内のすべてのテストファイルをチェック¶
複数のファイルやディレクトリを指定¶
基本的なコマンド¶
check コマンド(デフォルト)¶
出力フォーマットの指定¶
設定ファイルの指定¶
詳細な出力¶
設定¶
設定ファイル¶
Pytesteeは以下の場所で設定ファイルを自動検索します:
pyproject.tomlの[tool.pytestee]セクション.pytestee.tomlsetup.cfgの[pytestee]セクション
基本的な設定例¶
[tool.pytestee]
# チェックするルールを選択
select = ["PTCM", "PTAS", "PTEC"]
# 除外するルール
ignore = ["PTST002"]
# ルールの重要度を変更
[tool.pytestee.severity]
PTCM001 = "info" # AAA パターン検出 - 情報
PTCM002 = "info" # GWT パターン検出 - 情報
PTST001 = "info" # 構造的パターン - 情報
PTAS001 = "warning" # アサーション不足 - 警告
PTAS002 = "warning" # アサーション過多 - 警告
PTAS004 = "error" # アサーションなし - エラー(デフォルト)
# しきい値の設定
max_asserts = 5 # PTAS002 のしきい値
min_asserts = 1 # PTAS001 のしきい値
max_density = 0.6 # PTAS003 のしきい値
環境変数¶
設定は環境変数でも指定できます:
# 詳細出力を有効化
export PYTESTEE_VERBOSE=true
# 設定ファイルのパスを指定
export PYTESTEE_CONFIG="/path/to/config.toml"
# 出力フォーマットを指定
export PYTESTEE_FORMAT="json"
ルールの概要¶
Pytesteeは以下のカテゴリのルールを提供します:
PTCM: コメントベースパターン¶
- PTCM001: AAA パターン(Arrange, Act, Assert)の検出
- PTCM002: GWT パターン(Given, When, Then)の検出
PTST: 構造的パターン¶
- PTST001: 空行による構造的な AAA パターンの検出
- PTST002: 明確なパターンが検出されない場合の警告
PTLG: 論理的パターン¶
- PTLG001: AST解析による AAA パターンの検出
PTAS: アサーション¶
- PTAS001: アサーション不足
- PTAS002: アサーション過多
- PTAS003: アサーション密度が高い
- PTAS004: アサーションが存在しない
- PTAS005: 適切なアサーション数
PTNM: 命名規則¶
- PTNM001: テストメソッド名の日本語文字使用
PTVL: 脆弱性検出¶
- PTVL001: プライベート属性・メソッドへのアクセス
- PTVL002: 時間依存性の検出
- PTVL003: ランダム性依存の検出
- PTVL004: グローバル状態の変更
- PTVL005: クラス変数の操作
PTEC: エッジケース網羅性¶
- PTEC001: 数値エッジケースの不足
- PTEC002: コレクションエッジケースの不足
- PTEC003: 文字列エッジケースの不足
- PTEC004: 正常・異常ケース比率の分析
- PTEC005: 全体的なエッジケース網羅性スコア
詳細については、ルールリファレンスを参照してください。
例¶
良いテストの例¶
推奨パターン
改善が必要なテストの例¶
要改善パターン
def test_user_creation(): # PTNM001: 日本語の使用を推奨
user = User("田中太郎", "tanaka@example.com") # PTST002: パターン不明確
# PTAS004: アサーションが不足
このテストの問題点:
- ✗ 英語メソッド名(日本語推奨)
- ✗ 構造が不明確(AAA/GWTパターンなし)
- ✗ アサーションがない