mcpField
A
api-response-mocker

api-response-mocker

github.com/dkyazzentwatwaテスト・品質12458 回インストール29 週間前に更新
リポジトリ

api-response-mocker について

api-response-mockerは、Fakerを使い、定義したスキーマからAPI用のモックデータを生成します。開発やテスト向けで、ネスト構造、配列、データ間の関連、再現可能な生成に対応し、JSONまたはXMLで出力できます。

主な機能

  1. 01スキーマに基づくレスポンス生成
  2. 02Fakerによるデータ生成
  3. 03ネストオブジェクトと配列
  4. 04モックデータ間の参照
  5. 05JSONとXMLでの出力
  6. 06シードによる再現可能な生成

活用シーン

  1. 01テスト用のAPIレスポンス作成
  2. 02モックユーザーや商品リストの生成
  3. 03スキーマから再現可能なデータを生成
  4. 04ネストしたJSONやXMLのテストデータ作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill api-response-mocker

インストール後、Claude Code で/api-response-mockerを入力して読み込まれたか確認します。

同梱ファイルscripts/api_mocker.pyscripts/requirements.txt

詳細

API レスポンスモッカー

Faker を使用して、偽のデータによるリアルな API レスポンスを生成します。

機能

  • スキーマベースの生成:レスポンスの構造を定義します
  • Faker との統合:リアルな偽データを生成します
  • ネストされたオブジェクト:複雑なネスト構造に対応します
  • 配列:オブジェクトのリストを生成します
  • 関連付け:ほかのモックデータを参照します
  • 複数の形式:JSON、XML 形式で出力します

クイックスタート

from api_mocker import APIMocker

mocker = APIMocker()

# Generate user response
user = mocker.generate({
    "id": "uuid",
    "name": "name",
    "email": "email",
    "created_at": "datetime"
})

# Generate list of users
users = mocker.generate_list({
    "id": "uuid",
    "name": "name",
    "email": "email"
}, count=10)

CLI の使い方

# Generate from schema file
python api_mocker.py --schema user_schema.json --output user.json

# Generate list
python api_mocker.py --schema product.json --count 50 --output products.json

# Generate with seed (reproducible)
python api_mocker.py --schema order.json --seed 42 --output order.json

# Preview without saving
python api_mocker.py --schema customer.json --preview

スキーマ形式

Faker プロバイダー名を使用してフィールドを定義します。

{
    "id": "uuid",
    "first_name": "first_name",
    "last_name": "last_name",
    "email": "email",
    "phone": "phone_number",
    "company": "company",
    "address": {
        "street": "street_address",
        "city": "city",
        "state": "state",
        "zip": "zipcode",
        "country": "country"
    },
    "created_at": "date_time_this_year",
    "is_active": "boolean"
}

利用可能なデータ型

個人情報
  • name、first_name、last_name
  • email、safe_email
  • phone_number
  • ssn
住所
  • address、street_address
  • city、state、state_abbr
  • zipcode、postcode
  • country、country_code
  • latitude、longitude
インターネット
  • url、domain_name
  • ipv4、ipv6
  • user_name、password
  • uuid、uuid4
  • mac_address
ビジネス
  • company、company_suffix
  • job、job_title
  • bs、catch_phrase
金融
  • credit_card_number
  • iban、bban
  • currency_code
  • price(カスタム:浮動小数点数を返します)
日付/時刻
  • date、time
  • date_time、date_time_this_year
  • date_of_birth
  • iso8601
テキスト
  • text、sentence、paragraph
  • word、words
  • slug
数値
  • random_int、random_number
  • random_float({"type": "float", "min": 0, "max": 100} を使用します)
  • boolean

高度なスキーマ

配列
{
    "id": "uuid",
    "name": "name",
    "tags": {
        "_array": true,
        "_count": 3,
        "_item": "word"
    },
    "orders": {
        "_array": true,
        "_count": 5,
        "_item": {
            "order_id": "uuid",
            "amount": "random_int",
            "date": "date"
        }
    }
}
カスタム値
{
    "id": "uuid",
    "status": {
        "_choice": ["pending", "active", "completed"]
    },
    "priority": {
        "_range": [1, 5]
    },
    "score": {
        "_float": {"min": 0.0, "max": 100.0, "decimals": 2}
    }
}
ネストされたオブジェクト
{
    "user": {
        "id": "uuid",
        "profile": {
            "bio": "paragraph",
            "avatar_url": "image_url",
            "social": {
                "twitter": "user_name",
                "linkedin": "url"
            }
        }
    }
}

API リファレンス

APIMocker クラス
class APIMocker:
    def __init__(self, locale: str = "en_US", seed: int = None)

    # Generation
    def generate(self, schema: dict) -> dict
    def generate_list(self, schema: dict, count: int = 10) -> list

    # File operations
    def from_schema_file(self, filepath: str) -> dict
    def save(self, data: any, filepath: str, format: str = "json")

    # Utilities
    def set_seed(self, seed: int)
    def get_faker(self) -> Faker

スキーマの例

ユーザーレスポンス
{
    "id": "uuid",
    "username": "user_name",
    "email": "email",
    "profile": {
        "first_name": "first_name",
        "last_name": "last_name",
        "avatar": "image_url",
        "bio": "sentence"
    },
    "created_at": "iso8601",
    "last_login": "date_time_this_month"
}
E コマース商品
{
    "sku": "uuid",
    "name": "catch_phrase",
    "description": "paragraph",
    "price": {"_float": {"min": 9.99, "max": 999.99}},
    "currency": "currency_code",
    "category": {"_choice": ["Electronics", "Clothing", "Home", "Sports"]},
    "in_stock": "boolean",
    "rating": {"_float": {"min": 1, "max": 5, "decimals": 1}},
    "reviews_count": {"_range": [0, 500]}
}
API エラーレスポンス
{
    "error": {
        "code": {"_choice": ["NOT_FOUND", "UNAUTHORIZED", "BAD_REQUEST"]},
        "message": "sentence",
        "request_id": "uuid",
        "timestamp": "iso8601"
    }
}

依存関係

  • faker>=22.0.0

コメント