Files
xiaoxia-saas/tests/unit/test_1286_preview_count_validation.py
xiaoxia 248fd5408c
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m4s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m6s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 1m53s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m55s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (push) Successful in 4m32s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 54s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m1s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m16s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m55s
CI/CD Pipeline / Integration Tests (push) Successful in 2m24s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m6s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m4s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 7m58s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m38s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m36s
CI/CD Pipeline / Unit Tests (push) Successful in 9m9s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m8s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m40s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 7s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 24s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 27s
CI/CD Pipeline / Build Staging API Image (push) Successful in 16m54s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 1m59s
CI/CD Pipeline / Staging API Integration Tests (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
feat: 预览数量 preview_count 上限校验 + Worker 并发提升至 4 (#1292)
2026-08-08 11:14:45 +08:00

131 lines
4.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""预览数量 preview_count 校验测试。
验证 CreatePreviewGenerationTaskRequest 中 preview_count 字段:
- 默认值为 1
- 范围 1-10
- 超出范围报错
- Worker 并发配置验证
"""
import pytest
class TestPreviewCountValidation:
"""preview_count 字段校验"""
def test_default_preview_count_is_1(self):
"""默认 preview_count 为 1"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
req = CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
)
assert req.preview_count == 1
def test_preview_count_min_valid(self):
"""preview_count=1 合法"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
req = CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=1,
)
assert req.preview_count == 1
def test_preview_count_max_valid(self):
"""preview_count=10 合法(上限)"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
req = CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=10,
)
assert req.preview_count == 10
def test_preview_count_middle_value(self):
"""preview_count=5 合法"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
req = CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=5,
)
assert req.preview_count == 5
def test_preview_count_zero_raises(self):
"""preview_count=0 报错(低于下限)"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
from pydantic import ValidationError
with pytest.raises(ValidationError):
CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=0,
)
def test_preview_count_negative_raises(self):
"""preview_count=-1 报错"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
from pydantic import ValidationError
with pytest.raises(ValidationError):
CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=-1,
)
def test_preview_count_exceeds_max_raises(self):
"""preview_count=11 报错(超过上限 10"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
from pydantic import ValidationError
with pytest.raises(ValidationError):
CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=11,
)
def test_preview_count_large_value_raises(self):
"""preview_count=100 报错"""
from app.schemas.generation_task import CreatePreviewGenerationTaskRequest
from pydantic import ValidationError
with pytest.raises(ValidationError):
CreatePreviewGenerationTaskRequest(
template_id="tmpl_123",
asset_ids=["asset_1"],
preview_count=100,
)
class TestWorkerConcurrencyConfig:
"""Worker 并发配置验证"""
def test_default_worker_concurrency_is_4(self):
"""Worker 默认并发为 4"""
from packages.config import WorkerSettings
settings = WorkerSettings()
assert settings.worker_concurrency == 4
def test_worker_concurrency_configurable(self):
"""Worker 并发可通过环境变量配置"""
from packages.config import WorkerSettings
settings = WorkerSettings(worker_concurrency=8)
assert settings.worker_concurrency == 8
def test_worker_concurrency_is_int(self):
"""Worker 并发为整数类型"""
from packages.config import WorkerSettings
settings = WorkerSettings()
assert isinstance(settings.worker_concurrency, int)