df-test-framework 4.2.2__tar.gz → 4.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/CHANGELOG.md +64 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/PKG-INFO +4 -1
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/config_guide.md +46 -11
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/database_guide.md +55 -15
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/message_queue.md +80 -4
- df_test_framework-4.3.1/docs/releases/v4.3.0.md +179 -0
- df_test_framework-4.3.1/docs/releases/v4.3.1.md +49 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/pyproject.toml +5 -1
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/__init__.py +6 -2
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +107 -1
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +107 -1
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/env_files.py +90 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +1 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/pyproject_toml.py +5 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/__init__.py +4 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/schema.py +149 -8
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/message_queue.py +139 -58
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/uv.lock +64 -2
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.editorconfig +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.env.example +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.gitattributes +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/lint.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/release.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/security.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.github/workflows/test.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.gitignore +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.gitleaks.toml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.gitleaksignore +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.pre-commit-config.yaml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/.python-version +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/AGENTS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/CLAUDE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/CONTRIBUTING.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/README_PYPI.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/CONTRIBUTOR_GUIDE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/ESSENTIAL_DOCS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/FAQ.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/LEARNING_PATH.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/clients.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/context.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/events.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/exceptions.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/middleware.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/protocols.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core/types.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/core.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/databases.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/drivers.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/extensions.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/infrastructure.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/patterns.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/api-reference/testing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/CODE_STRUCTURE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/config-driven-design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/config-management-analysis.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/design/ui-observability-design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/v3_complete_draft.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/v3_final_draft.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/overview.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/archive/versions/v2-architecture.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/extension-points.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/multi-project-reuse.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/observability-architecture.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture/test-type-support.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/architecture//344/272/224/345/261/202/346/236/266/346/236/204/350/257/246/350/247/243.md" +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/observability-config-design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/ui-best-practices-2026.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/web-architecture-consistency-design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/design/web-event-driven-comparison.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/async_database_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/async_http_client.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/httpx_advanced_usage.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/logging_configuration.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/logging_pytest_integration.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/modern_logging_best_practices.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/guides/repository_uow_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/111.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/issues/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/issues/summary.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/issues/v1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/migration/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/reports_2025/async_http_client_design.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/user-guide/extensions.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/user-guide/ui-testing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/BaseAPI/346/234/200/344/275/263/345/256/236/350/267/265/346/214/207/345/215/227.md" +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/architecture.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/best-practices.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/config-integration-guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/optimization-report.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1/publishing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/v1//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251/346/265/213/350/257/225/346/241/206/346/236/266.md" +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/ci-templates/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/ci-templates/github-actions.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/ci-templates/gitlab-ci.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/development/RELEASE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/development/VERSION_CONTROL_RULES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/development/local-development.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/DECIMAL_GUIDE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/allure_plugin.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/assertions_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/async_api_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/auth_session_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/bootstrap_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/decorators_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/distributed_tracing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/event_bus_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/extensions.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/factory_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/fixtures_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/graphql_client.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/grpc_client.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/helpers_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/http_client_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/integration-guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/local_debug_quickstart.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/logging_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/middleware_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/mocking.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/monitoring_plugin.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/openapi_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/plugins_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/prometheus_metrics.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/redis_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/resilience_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/sanitize_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/scaffold_cli_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/service_client_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/storage.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/telemetry_guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/test_data.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/test_data_cleanup.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/testing-development.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/guides/web-ui-testing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/migration/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/migration/v3-to-v4.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.0.0-alpha.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.1.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.10.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.11.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.11.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.12.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.12.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.13.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.14.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.14.0_completion_report.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.14.0_implementation_complete.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.16.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.17.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.17.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.17.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.18.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.18.1-bugfix.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.18.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.19.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.2.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.20.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.21.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.22.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.22.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.23.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.24.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.25.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.26.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.27.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.28.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.28.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.29.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.3.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.30.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.31.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.32.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.33.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.34.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.34.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.3.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.4.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.5.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.6.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.35.7.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.36.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.36.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.37.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.10.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.4.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.5.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.7.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.8.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.38.9.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.39.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.39.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.4.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.40.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.41.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.41.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.42.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.43.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.44.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.45.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.46.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.46.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.46.3.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.5.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.6.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.6.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.6.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.7.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.8.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v3.9.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.0.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.0.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.0.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.0.3.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.0.4.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.1.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.1.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.1.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.2.0.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.2.1.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/releases/v4.2.2.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/skills/write-code.zip +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/skills/write-test.zip +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/troubleshooting/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/troubleshooting/common-errors.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/troubleshooting/debugging-guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/BEST_PRACTICES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/QUICK_REFERENCE.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/QUICK_START.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/USER_MANUAL.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/ci-cd.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/code-generation.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/configuration.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/cross-project-sharing.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/debugging.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/examples.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/multi-repo.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/nested-settings-guide.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/docs/user-guide/security-best-practices.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/01-basic/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/01-basic/database_operations.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/01-basic/http_client_usage.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/01-basic/redis_cache.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/01-basic/storage_usage.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/02-bootstrap/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/02-bootstrap/custom_providers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/02-bootstrap/custom_settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/02-bootstrap/with_extensions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/03-testing/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/03-testing/conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/03-testing/test_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/03-testing/test_database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/03-testing/test_with_fixtures.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/04-patterns/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/04-patterns/builder_pattern.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/04-patterns/combined_patterns.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/04-patterns/repository_pattern.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/allure_enhancement_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/custom_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/data_factory_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/environment_validator_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/monitoring_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/mq_monitor_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/05-extensions/notification_extension.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/06-ui-testing/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/06-ui-testing/basic_ui_test.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/06-ui-testing/conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/06-ui-testing/page_object_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/kafka_basic.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/kafka_ssl.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/rabbitmq_basic.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/rabbitmq_topic.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/rocketmq-broker.conf +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-message-queue/rocketmq_basic.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-v35-features/02_profile_configuration.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-v35-features/03_runtime_overrides.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-v35-features/04_observability.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/07-v35-features/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/02_repository_v37.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/05_project_uow.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/08-v37-features/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/examples/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/scripts/fetch_swagger.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/scripts/security-scan.bat +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/scripts/security-scan.sh +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/bootstrap/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/bootstrap/bootstrap.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/bootstrap/providers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/bootstrap/runtime.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/async_database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/databases/uow.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/__main__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/cicd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/env.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/init_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/commands/interactive.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/generators/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/main.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/test.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/constants.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/env.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/full_conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/readme.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/uow.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/cli/utils.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/context/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/context/execution.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/context/propagation.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/events/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/events/types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/exceptions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/middleware/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/middleware/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/middleware/chain.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/middleware/decorator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/middleware/protocol.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/models/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/models/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/event.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/repository.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/protocols/telemetry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/core/types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/loader.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/config/sources.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/events/bus.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/logging/config.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/plugins/builtin/reporting/oms_reporter_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/assertions/helper.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/assertions/matchers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/assertions/response.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/builders/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/factories/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/factories/examples.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/loaders/base.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/debugging/console.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/decorators/actions_class.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/decorators/api_class.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/decorators/service_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/allure.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/auth.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/core.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/fixtures/ui.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/debug.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/env_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/plugins/markers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/reporting/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/README.md +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/bootstrap/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/bootstrap/test_bootstrap.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/bootstrap/test_providers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/bootstrap/test_runtime.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/graphql/test_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/graphql/test_models.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/grpc/test_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/grpc/test_models.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/core/test_request.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/core/test_response.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_async_database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_database.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_database_factory.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_query_builder.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_repositories.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/databases/test_uow.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/messengers/test_kafka_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/storages/test_local_file.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/storages/test_oss.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/capabilities/storages/test_s3.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_env_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_generate_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_init_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_interactive_cmd.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_main.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/cli/test_utils.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/conftest.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/protocols/test_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/protocols/test_event.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/protocols/test_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/protocols/test_repository.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/protocols/test_telemetry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_context.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_event_types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_events.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_middleware.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/core/test_types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/config/test_loader.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/config/test_middleware_schema.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/context/test_carriers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/events/test_bus.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_observer.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_performance.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_registry.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/metrics/test_types.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/plugins/test_manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/sanitize/test_service.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/telemetry/test_facade.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/telemetry/test_noop.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_bootstrap.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_helpers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_logging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_pipeline.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_runtime.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_settings.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/test_sources.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_context.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_decorators.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_exporters.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_integrations.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_interceptors.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/infrastructure/tracing/test_manager.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/integration/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/integration/test_config_environment.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/integration/test_event_observability.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/integration/test_factory_assertions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/integration/test_middleware_chain.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/migration/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/plugins/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/test_json_to_model_generator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/assertions/test_json_schema.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/assertions/test_matchers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/data/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/data/test_builders.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/data/test_data_generator.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/data/test_factories.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/debugging/test_console_debug_observer.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/decorators/test_actions_class.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/decorators/test_api_class.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/decorators/test_service_client.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_cleanup.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_fixtures_core.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/mocking/test_database_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/mocking/test_http_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/mocking/test_redis_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/mocking/test_time_mock.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/plugins/test_debug_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/plugins/test_env_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/plugins/test_logging_plugin.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/plugins/test_markers.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/reporting/test_allure_observer.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/test_allure_helper.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/test_assertions.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/test_data_loaders.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/tests/testing/test_factories_presets.py +0 -0
- {df_test_framework-4.2.2 → df_test_framework-4.3.1}/verify_fixes.py +0 -0
|
@@ -5,6 +5,70 @@
|
|
|
5
5
|
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
6
|
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
7
|
|
|
8
|
+
## [4.3.1] - 2026-04-16
|
|
9
|
+
|
|
10
|
+
### 🔧 改进
|
|
11
|
+
|
|
12
|
+
- **HTTP 方法 `@overload` 类型重载** (`BaseAPI` / `AsyncBaseAPI`): `get/post/put/delete/patch` 新增两组 `@overload`,当 `model=type[T]` 时推断返回 `T`,当 `model=None` 时推断返回 `dict[str, Any]`,消除调用处的手动类型转换
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## [4.3.0] - 2026-04-16
|
|
17
|
+
|
|
18
|
+
### ✨ 新增功能
|
|
19
|
+
|
|
20
|
+
- 🗄️ **多数据库方言支持** (`infrastructure/config/schema`): `DatabaseConfig` 新增 `dialect` 字段,通过 host/port/name/user/password 可自动组装非 MySQL 数据库的连接字符串,无需手动拼写完整 URL
|
|
21
|
+
- `dialect: "mysql"`(默认,兼容现有配置)→ `mysql+pymysql://...?charset=utf8mb4`
|
|
22
|
+
- `dialect: "mssql"` → `mssql+pyodbc://...?driver=ODBC+Driver+18...`,配合新增的 `driver`(ODBC 驱动名)和 `trust_server_certificate`(默认 True)字段
|
|
23
|
+
- `dialect: "postgresql"` → `postgresql+psycopg2://...`
|
|
24
|
+
- `dialect: "sqlite"` → `sqlite:///name`
|
|
25
|
+
- 🔄 **MSSQL 异步驱动映射** (`infrastructure/config/schema`): `resolved_async_connection_string()` 新增 `mssql+pyodbc → mssql+aioodbc` 映射
|
|
26
|
+
- 📦 **`database-mssql` 可选依赖组**: 新增 `pyodbc>=5.1.0`(同步)和 `aioodbc>=0.5.0`(异步)
|
|
27
|
+
```bash
|
|
28
|
+
uv sync --extra database-mssql
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- 🐰 **RabbitMQ / Kafka 环境配置支持** (`infrastructure/config/schema`, `testing/fixtures/message_queue`):
|
|
32
|
+
新增 `RabbitMQSettingsConfig` 和 `KafkaSettingsConfig`,`FrameworkSettings` 增加 `rabbitmq:` / `kafka:` 可选字段(`default=None`,不配则透明,不污染非 MQ 项目)。`rabbitmq_config` / `kafka_config` fixtures 优先从 settings 读取,未配置时回退 localhost 默认值(向后兼容)
|
|
33
|
+
|
|
34
|
+
### 📝 配置示例(MSSQL)
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
# config/environments/test.yaml
|
|
38
|
+
db:
|
|
39
|
+
dialect: mssql
|
|
40
|
+
host: 10.0.0.1
|
|
41
|
+
port: 1433
|
|
42
|
+
name: mydb
|
|
43
|
+
user: sa
|
|
44
|
+
# password 建议放 config/secrets/.env.local: DB__PASSWORD=...
|
|
45
|
+
pool_size: 5
|
|
46
|
+
pool_recycle: 1800
|
|
47
|
+
# driver: "ODBC Driver 17 for SQL Server" # 默认 18,如需 17 在此覆盖
|
|
48
|
+
# trust_server_certificate: true # 默认 true,生产环境可设 false
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 📝 配置示例(RabbitMQ / Kafka)
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
# config/environments/test.yaml
|
|
55
|
+
rabbitmq:
|
|
56
|
+
host: mq.test.example.com
|
|
57
|
+
port: 5672
|
|
58
|
+
username: admin
|
|
59
|
+
# password 放 .env.local: RABBITMQ__PASSWORD=...
|
|
60
|
+
|
|
61
|
+
kafka:
|
|
62
|
+
bootstrap_servers:
|
|
63
|
+
- broker1.test.example.com:9092
|
|
64
|
+
# security_protocol: SASL_PLAINTEXT # 需要认证时配置
|
|
65
|
+
# sasl_mechanism: PLAIN
|
|
66
|
+
# sasl_username: user
|
|
67
|
+
# sasl_password 放 .env.local: KAFKA__SASL_PASSWORD=...
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
8
72
|
## [4.2.2] - 2026-04-15
|
|
9
73
|
|
|
10
74
|
### 🔧 修复
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: df-test-framework
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.1
|
|
4
4
|
Summary: 基于交互模式的现代化测试自动化框架,支持多种测试场景
|
|
5
5
|
Project-URL: Homepage, https://github.com/yourorg/df-test-framework
|
|
6
6
|
Project-URL: Repository, https://github.com/yourorg/df-test-framework
|
|
@@ -75,6 +75,9 @@ Provides-Extra: database-async
|
|
|
75
75
|
Requires-Dist: aiomysql>=0.2.0; extra == 'database-async'
|
|
76
76
|
Requires-Dist: aiosqlite>=0.20.0; extra == 'database-async'
|
|
77
77
|
Requires-Dist: asyncpg>=0.29.0; extra == 'database-async'
|
|
78
|
+
Provides-Extra: database-mssql
|
|
79
|
+
Requires-Dist: aioodbc>=0.5.0; extra == 'database-mssql'
|
|
80
|
+
Requires-Dist: pyodbc>=5.1.0; extra == 'database-mssql'
|
|
78
81
|
Provides-Extra: kafka
|
|
79
82
|
Requires-Dist: confluent-kafka>=2.12.0; extra == 'kafka'
|
|
80
83
|
Provides-Extra: mq
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 配置系统使用指南
|
|
2
2
|
|
|
3
|
-
> **最后更新**: 2026-
|
|
3
|
+
> **最后更新**: 2026-04-16
|
|
4
4
|
> **适用版本**: v3.35.0+(YAML 分层配置)
|
|
5
5
|
|
|
6
6
|
DF Test Framework 提供完整的多环境配置支持,包括 YAML 分层配置、深度合并、`_extends` 继承、统一配置访问等功能。
|
|
@@ -574,10 +574,12 @@ jobs:
|
|
|
574
574
|
| `env` | str | 环境名称 |
|
|
575
575
|
| `debug` | bool | 调试模式 |
|
|
576
576
|
| `http` | HTTPConfig | HTTP 客户端配置 |
|
|
577
|
-
| `db` | DatabaseConfig |
|
|
578
|
-
| `redis` | RedisConfig | Redis
|
|
579
|
-
| `
|
|
580
|
-
| `
|
|
577
|
+
| `db` | DatabaseConfig \| None | 数据库配置(未配置时为 None) |
|
|
578
|
+
| `redis` | RedisConfig \| None | Redis 配置(未配置时为 None) |
|
|
579
|
+
| `rabbitmq` | RabbitMQSettingsConfig \| None | RabbitMQ 连接配置(v4.3.0,可选) |
|
|
580
|
+
| `kafka` | KafkaSettingsConfig \| None | Kafka 连接配置(v4.3.0,可选) |
|
|
581
|
+
| `storage` | StorageConfig \| None | 存储配置 |
|
|
582
|
+
| `test` | TestExecutionConfig | 测试执行配置 |
|
|
581
583
|
| `logging` | LoggingConfig | 日志配置 |
|
|
582
584
|
| `observability` | ObservabilityConfig | 可观测性配置 |
|
|
583
585
|
|
|
@@ -594,12 +596,45 @@ jobs:
|
|
|
594
596
|
|
|
595
597
|
| 字段 | 类型 | 默认值 | 说明 |
|
|
596
598
|
|------|------|--------|------|
|
|
597
|
-
| `
|
|
598
|
-
| `
|
|
599
|
-
| `
|
|
600
|
-
| `
|
|
601
|
-
| `
|
|
602
|
-
| `
|
|
599
|
+
| `connection_string` | str \| None | None | 完整连接字符串(优先级最高,设置后其他字段忽略) |
|
|
600
|
+
| `dialect` | str \| None | None | 数据库方言:`mysql`(默认)、`mssql`、`postgresql`、`sqlite`(v4.3.0) |
|
|
601
|
+
| `host` | str \| None | None | 数据库主机 |
|
|
602
|
+
| `port` | int \| None | None | 端口 |
|
|
603
|
+
| `name` | str \| None | None | 数据库名 |
|
|
604
|
+
| `user` | str \| None | None | 用户名 |
|
|
605
|
+
| `password` | SecretStr \| None | None | 密码 |
|
|
606
|
+
| `charset` | str | "utf8mb4" | 字符集(MySQL 专用) |
|
|
607
|
+
| `driver` | str \| None | None | ODBC 驱动名(MSSQL 专用,默认 "ODBC Driver 18 for SQL Server")(v4.3.0) |
|
|
608
|
+
| `trust_server_certificate` | bool | True | TrustServerCertificate(MSSQL 专用)(v4.3.0) |
|
|
609
|
+
|
|
610
|
+
> **MySQL**:`dialect` 可省略(默认)。**MSSQL** 需系统安装 ODBC Driver 且 `uv sync --extra database-mssql`。
|
|
611
|
+
|
|
612
|
+
### RabbitMQSettingsConfig 字段(v4.3.0)
|
|
613
|
+
|
|
614
|
+
配置在 `rabbitmq:` 块下(不配置时字段为 None,不影响不使用 MQ 的项目):
|
|
615
|
+
|
|
616
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
617
|
+
|------|------|--------|------|
|
|
618
|
+
| `host` | str | "localhost" | RabbitMQ 服务器地址 |
|
|
619
|
+
| `port` | int | 5672 | 端口 |
|
|
620
|
+
| `virtual_host` | str | "/" | 虚拟主机 |
|
|
621
|
+
| `username` | str | "guest" | 用户名 |
|
|
622
|
+
| `password` | SecretStr \| None | None | 密码 |
|
|
623
|
+
| `heartbeat` | int | 600 | 心跳间隔(秒) |
|
|
624
|
+
| `connection_attempts` | int | 3 | 最大连接重试次数 |
|
|
625
|
+
| `retry_delay` | float | 2.0 | 重试间隔(秒) |
|
|
626
|
+
|
|
627
|
+
### KafkaSettingsConfig 字段(v4.3.0)
|
|
628
|
+
|
|
629
|
+
配置在 `kafka:` 块下:
|
|
630
|
+
|
|
631
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
632
|
+
|------|------|--------|------|
|
|
633
|
+
| `bootstrap_servers` | list[str] | ["localhost:9092"] | Broker 地址列表(也接受逗号分隔字符串) |
|
|
634
|
+
| `security_protocol` | str | "PLAINTEXT" | 安全协议(PLAINTEXT / SASL_PLAINTEXT / SASL_SSL / SSL) |
|
|
635
|
+
| `sasl_mechanism` | str \| None | None | SASL 机制(PLAIN / SCRAM-SHA-256 等) |
|
|
636
|
+
| `sasl_username` | str \| None | None | SASL 用户名 |
|
|
637
|
+
| `sasl_password` | SecretStr \| None | None | SASL 密码 |
|
|
603
638
|
|
|
604
639
|
---
|
|
605
640
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 数据库访问指南
|
|
2
2
|
|
|
3
|
-
> **最后更新**: 2026-
|
|
4
|
-
> **适用版本**: v2.0.0+(同步),v4.0.0
|
|
3
|
+
> **最后更新**: 2026-04-16
|
|
4
|
+
> **适用版本**: v2.0.0+(同步),v4.0.0+(异步推荐),v4.3.0+(多方言支持)
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -21,25 +21,63 @@ DF Test Framework 提供完整的数据库访问能力,支持同步和异步
|
|
|
21
21
|
| 数据库 | 同步驱动 | 异步驱动 | 推荐版本 |
|
|
22
22
|
|--------|---------|---------|---------|
|
|
23
23
|
| **MySQL** | pymysql | aiomysql | 5.7+ |
|
|
24
|
+
| **MSSQL** | pyodbc | aioodbc | SQL Server 2017+ |
|
|
24
25
|
| **PostgreSQL** | psycopg2 | asyncpg | 12+ |
|
|
25
26
|
| **SQLite** | sqlite3 | aiosqlite | 3.35+ |
|
|
26
27
|
|
|
28
|
+
MSSQL 需安装额外依赖(系统也需安装 ODBC Driver):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
uv sync --extra database-mssql
|
|
32
|
+
# 或
|
|
33
|
+
pip install 'df-test-framework[database-mssql]'
|
|
34
|
+
```
|
|
35
|
+
|
|
27
36
|
---
|
|
28
37
|
|
|
29
38
|
## 快速开始
|
|
30
39
|
|
|
31
40
|
### 1. 配置数据库
|
|
32
41
|
|
|
42
|
+
**YAML 配置(推荐,v3.35.0+)**
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
# config/environments/test.yaml
|
|
46
|
+
|
|
47
|
+
# MySQL(默认,dialect 可省略)
|
|
48
|
+
db:
|
|
49
|
+
host: db.example.com
|
|
50
|
+
port: 3306
|
|
51
|
+
name: test_db
|
|
52
|
+
user: root
|
|
53
|
+
# password 建议放 config/secrets/.env.local: DB__PASSWORD=...
|
|
54
|
+
|
|
55
|
+
# MSSQL(v4.3.0+)
|
|
56
|
+
db:
|
|
57
|
+
dialect: mssql
|
|
58
|
+
host: mssql.example.com
|
|
59
|
+
port: 1433
|
|
60
|
+
name: test_db
|
|
61
|
+
user: sa
|
|
62
|
+
# driver: "ODBC Driver 18 for SQL Server" # 可选,默认即此值
|
|
63
|
+
# trust_server_certificate: true # 默认 true
|
|
64
|
+
|
|
65
|
+
# PostgreSQL(v4.3.0+)
|
|
66
|
+
db:
|
|
67
|
+
dialect: postgresql
|
|
68
|
+
host: pg.example.com
|
|
69
|
+
port: 5432
|
|
70
|
+
name: test_db
|
|
71
|
+
user: postgres
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**直接指定连接字符串(所有版本,优先级最高)**
|
|
75
|
+
|
|
33
76
|
```yaml
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
DB__USER=root
|
|
39
|
-
DB__PASSWORD=password
|
|
40
|
-
|
|
41
|
-
# 连接字符串方式
|
|
42
|
-
DB__CONNECTION_STRING=mysql+pymysql://root:password@localhost:3306/test_db
|
|
77
|
+
db:
|
|
78
|
+
connection_string: "mysql+pymysql://root:password@localhost:3306/test_db"
|
|
79
|
+
# 或 MSSQL 完整 connection string:
|
|
80
|
+
# connection_string: "mssql+pyodbc://sa:pass@host:1433/db?driver=ODBC+Driver+18+for+SQL+Server&TrustServerCertificate=yes"
|
|
43
81
|
```
|
|
44
82
|
|
|
45
83
|
### 2. 选择合适的客户端
|
|
@@ -549,9 +587,10 @@ async def test_with_fixture(async_database):
|
|
|
549
587
|
DB__CONNECTION_STRING=mysql+pymysql://user:pass@localhost/test_db
|
|
550
588
|
|
|
551
589
|
# 框架自动转换:
|
|
552
|
-
# mysql+pymysql
|
|
590
|
+
# mysql+pymysql → mysql+aiomysql ✅
|
|
591
|
+
# mssql+pyodbc → mssql+aioodbc ✅ (v4.3.0+)
|
|
553
592
|
# postgresql+psycopg2 → postgresql+asyncpg ✅
|
|
554
|
-
# sqlite
|
|
593
|
+
# sqlite → sqlite+aiosqlite ✅
|
|
555
594
|
```
|
|
556
595
|
|
|
557
596
|
### 迁移指南
|
|
@@ -1263,9 +1302,10 @@ class UserRepository(BaseRepository):
|
|
|
1263
1302
|
DB__CONNECTION_STRING=mysql+pymysql://user:pass@localhost/test_db
|
|
1264
1303
|
|
|
1265
1304
|
# 框架自动检测并转换
|
|
1266
|
-
# mysql+pymysql
|
|
1305
|
+
# mysql+pymysql → mysql+aiomysql ✅
|
|
1306
|
+
# mssql+pyodbc → mssql+aioodbc ✅ (v4.3.0+)
|
|
1267
1307
|
# postgresql+psycopg2 → postgresql+asyncpg ✅
|
|
1268
|
-
# sqlite
|
|
1308
|
+
# sqlite → sqlite+aiosqlite ✅
|
|
1269
1309
|
```
|
|
1270
1310
|
|
|
1271
1311
|
### Q5: 如何处理复杂查询?
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 消息队列使用指南
|
|
2
2
|
|
|
3
|
-
> **最后更新**: 2026-
|
|
4
|
-
> **适用版本**: v3.9.0
|
|
3
|
+
> **最后更新**: 2026-04-16
|
|
4
|
+
> **适用版本**: v3.9.0+,v4.3.0+(YAML 环境配置支持)
|
|
5
5
|
> **支持的消息队列**: Kafka + RabbitMQ + RocketMQ
|
|
6
6
|
|
|
7
7
|
## 概述
|
|
@@ -223,14 +223,35 @@ client.delete_topic("old-topic")
|
|
|
223
223
|
|
|
224
224
|
### 在测试中使用
|
|
225
225
|
|
|
226
|
-
|
|
226
|
+
**Step 1:YAML 环境配置(v4.3.0+,推荐)**
|
|
227
|
+
|
|
228
|
+
在 `config/environments/test.yaml` 中配置 Kafka 连接参数,框架会自动读取:
|
|
229
|
+
|
|
230
|
+
```yaml
|
|
231
|
+
# config/environments/test.yaml
|
|
232
|
+
kafka:
|
|
233
|
+
bootstrap_servers:
|
|
234
|
+
- broker1.example.com:9092
|
|
235
|
+
- broker2.example.com:9092
|
|
236
|
+
# SASL 认证(可选)
|
|
237
|
+
# security_protocol: SASL_SSL
|
|
238
|
+
# sasl_mechanism: PLAIN
|
|
239
|
+
# sasl_username: user
|
|
240
|
+
# sasl_password 建议放 config/secrets/.env.local: KAFKA__SASL_PASSWORD=...
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**Step 2:conftest.py 导入 fixtures**
|
|
227
244
|
|
|
228
245
|
```python
|
|
229
246
|
# conftest.py
|
|
230
247
|
from df_test_framework.testing.fixtures.message_queue import (
|
|
231
248
|
kafka_client, kafka_config
|
|
232
249
|
)
|
|
250
|
+
```
|
|
233
251
|
|
|
252
|
+
**Step 3:在测试中使用**
|
|
253
|
+
|
|
254
|
+
```python
|
|
234
255
|
# test_kafka.py
|
|
235
256
|
def test_send_and_consume(kafka_client):
|
|
236
257
|
# 发送消息
|
|
@@ -250,6 +271,21 @@ def test_send_and_consume(kafka_client):
|
|
|
250
271
|
assert messages[0] == test_message
|
|
251
272
|
```
|
|
252
273
|
|
|
274
|
+
**高级:完全覆盖 kafka_config(自定义行为参数)**
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
# conftest.py
|
|
278
|
+
import pytest
|
|
279
|
+
from df_test_framework.capabilities.messengers.queue.kafka import KafkaConfig, KafkaProducerConfig
|
|
280
|
+
|
|
281
|
+
@pytest.fixture(scope="session")
|
|
282
|
+
def kafka_config():
|
|
283
|
+
return KafkaConfig(
|
|
284
|
+
bootstrap_servers=["kafka.example.com:9092"],
|
|
285
|
+
producer=KafkaProducerConfig(compression_type="gzip"),
|
|
286
|
+
)
|
|
287
|
+
```
|
|
288
|
+
|
|
253
289
|
---
|
|
254
290
|
|
|
255
291
|
## 🐰 RabbitMQ客户端
|
|
@@ -470,14 +506,32 @@ client.delete_queue("temp-messages")
|
|
|
470
506
|
|
|
471
507
|
### 在测试中使用
|
|
472
508
|
|
|
473
|
-
|
|
509
|
+
**Step 1:YAML 环境配置(v4.3.0+,推荐)**
|
|
510
|
+
|
|
511
|
+
在 `config/environments/test.yaml` 中配置 RabbitMQ 连接参数,框架会自动读取:
|
|
512
|
+
|
|
513
|
+
```yaml
|
|
514
|
+
# config/environments/test.yaml
|
|
515
|
+
rabbitmq:
|
|
516
|
+
host: mq.example.com
|
|
517
|
+
port: 5672
|
|
518
|
+
virtual_host: /
|
|
519
|
+
username: admin
|
|
520
|
+
# password 建议放 config/secrets/.env.local: RABBITMQ__PASSWORD=...
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
**Step 2:conftest.py 导入 fixtures**
|
|
474
524
|
|
|
475
525
|
```python
|
|
476
526
|
# conftest.py
|
|
477
527
|
from df_test_framework.testing.fixtures.message_queue import (
|
|
478
528
|
rabbitmq_client, rabbitmq_config
|
|
479
529
|
)
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
**Step 3:在测试中使用**
|
|
480
533
|
|
|
534
|
+
```python
|
|
481
535
|
# test_rabbitmq.py
|
|
482
536
|
def test_fanout_exchange(rabbitmq_client):
|
|
483
537
|
# 声明fanout exchange和多个队列
|
|
@@ -504,6 +558,28 @@ def test_fanout_exchange(rabbitmq_client):
|
|
|
504
558
|
rabbitmq_client.delete_exchange("broadcast")
|
|
505
559
|
```
|
|
506
560
|
|
|
561
|
+
**高级:完全覆盖 rabbitmq_config(自定义 consume/publish 行为参数)**
|
|
562
|
+
|
|
563
|
+
```python
|
|
564
|
+
# conftest.py
|
|
565
|
+
import pytest
|
|
566
|
+
from pydantic import SecretStr
|
|
567
|
+
from df_test_framework.capabilities.messengers.queue.rabbitmq import (
|
|
568
|
+
RabbitMQConfig, RabbitMQConnectionConfig, RabbitMQConsumeConfig
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
@pytest.fixture(scope="session")
|
|
572
|
+
def rabbitmq_config():
|
|
573
|
+
return RabbitMQConfig(
|
|
574
|
+
connection=RabbitMQConnectionConfig(
|
|
575
|
+
host="mq.example.com",
|
|
576
|
+
username="admin",
|
|
577
|
+
password=SecretStr("secret"),
|
|
578
|
+
),
|
|
579
|
+
consume=RabbitMQConsumeConfig(prefetch_count=10),
|
|
580
|
+
)
|
|
581
|
+
```
|
|
582
|
+
|
|
507
583
|
---
|
|
508
584
|
|
|
509
585
|
## 📋 测试场景示例
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# v4.3.0 发布说明
|
|
2
|
+
|
|
3
|
+
**发布日期**: 2026-04-16
|
|
4
|
+
**类型**: 次版本(Minor Release)
|
|
5
|
+
**主题**: 多数据库方言支持 + 消息队列环境配置
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
v4.3.0 解决了两个长期痛点:
|
|
12
|
+
|
|
13
|
+
1. **多方言数据库接入**:`DatabaseConfig` 新增 `dialect` 字段,MSSQL / PostgreSQL / SQLite 项目无需手写完整连接字符串,框架自动组装。
|
|
14
|
+
2. **消息队列环境切换**:RabbitMQ / Kafka 连接参数现在可写入 YAML 环境配置,`rabbitmq_config` / `kafka_config` fixtures 自动读取,与 `db`、`redis` 的使用模式完全对齐。
|
|
15
|
+
|
|
16
|
+
**向后兼容**:所有变更均为新增字段/行为,现有配置无需修改。
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 新增功能
|
|
21
|
+
|
|
22
|
+
### 1. DatabaseConfig 多方言支持
|
|
23
|
+
|
|
24
|
+
**影响文件**: `src/df_test_framework/infrastructure/config/schema.py`
|
|
25
|
+
|
|
26
|
+
新增 `dialect` 字段,支持四种方言自动组装连接字符串:
|
|
27
|
+
|
|
28
|
+
| dialect | 同步驱动 | 异步驱动 | 说明 |
|
|
29
|
+
|---------|---------|---------|------|
|
|
30
|
+
| `mysql`(默认) | `mysql+pymysql` | `mysql+aiomysql` | 兼容现有配置,dialect 可省略 |
|
|
31
|
+
| `mssql` | `mssql+pyodbc` | `mssql+aioodbc` | 需安装 ODBC Driver + `database-mssql` 额外依赖 |
|
|
32
|
+
| `postgresql` | `postgresql+psycopg2` | `postgresql+asyncpg` | |
|
|
33
|
+
| `sqlite` | `sqlite` | `sqlite+aiosqlite` | |
|
|
34
|
+
|
|
35
|
+
**MSSQL 专属字段**:
|
|
36
|
+
- `driver`: ODBC 驱动名,默认 `"ODBC Driver 18 for SQL Server"`
|
|
37
|
+
- `trust_server_certificate`: 默认 `True`,测试环境自签名证书免配置
|
|
38
|
+
|
|
39
|
+
`resolved_async_connection_string()` 新增 `mssql+pyodbc → mssql+aioodbc` 映射,异步场景同样支持。
|
|
40
|
+
|
|
41
|
+
**YAML 配置示例**:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
# MySQL(默认,dialect 可省略)
|
|
45
|
+
db:
|
|
46
|
+
host: db.example.com
|
|
47
|
+
port: 3306
|
|
48
|
+
name: test_db
|
|
49
|
+
user: root
|
|
50
|
+
|
|
51
|
+
# MSSQL
|
|
52
|
+
db:
|
|
53
|
+
dialect: mssql
|
|
54
|
+
host: mssql.example.com
|
|
55
|
+
port: 1433
|
|
56
|
+
name: test_db
|
|
57
|
+
user: sa
|
|
58
|
+
# driver: "ODBC Driver 18 for SQL Server" # 可选,默认即此值
|
|
59
|
+
# trust_server_certificate: true # 默认 true
|
|
60
|
+
|
|
61
|
+
# PostgreSQL
|
|
62
|
+
db:
|
|
63
|
+
dialect: postgresql
|
|
64
|
+
host: pg.example.com
|
|
65
|
+
port: 5432
|
|
66
|
+
name: test_db
|
|
67
|
+
user: postgres
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. database-mssql 可选依赖组
|
|
71
|
+
|
|
72
|
+
**影响文件**: `pyproject.toml`、`cli/templates/project/pyproject_toml.py`
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
uv sync --extra database-mssql
|
|
76
|
+
# 包含: pyodbc>=5.1.0(同步)+ aioodbc>=0.5.0(异步)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
系统还需安装 ODBC Driver 17 或 18 for SQL Server。
|
|
80
|
+
|
|
81
|
+
### 3. RabbitMQSettingsConfig / KafkaSettingsConfig
|
|
82
|
+
|
|
83
|
+
**影响文件**: `src/df_test_framework/infrastructure/config/schema.py`、`infrastructure/config/__init__.py`
|
|
84
|
+
|
|
85
|
+
新增两个配置模型,集成进 `FrameworkSettings`(默认 `None`,不使用 MQ 的项目完全透明):
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
class FrameworkSettings(BaseSettings):
|
|
89
|
+
rabbitmq: RabbitMQSettingsConfig | None = None # v4.3.0
|
|
90
|
+
kafka: KafkaSettingsConfig | None = None # v4.3.0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**RabbitMQSettingsConfig 字段**:
|
|
94
|
+
|
|
95
|
+
| 字段 | 默认值 | 说明 |
|
|
96
|
+
|------|--------|------|
|
|
97
|
+
| `host` | `"localhost"` | 服务器地址 |
|
|
98
|
+
| `port` | `5672` | 端口 |
|
|
99
|
+
| `virtual_host` | `"/"` | 虚拟主机 |
|
|
100
|
+
| `username` | `"guest"` | 用户名 |
|
|
101
|
+
| `password` | `None` | 建议通过 `RABBITMQ__PASSWORD` 环境变量注入 |
|
|
102
|
+
| `heartbeat` | `600` | 心跳间隔(秒) |
|
|
103
|
+
| `connection_attempts` | `3` | 最大重试次数 |
|
|
104
|
+
| `retry_delay` | `2` | 重试间隔(秒) |
|
|
105
|
+
|
|
106
|
+
**KafkaSettingsConfig 字段**:
|
|
107
|
+
|
|
108
|
+
| 字段 | 默认值 | 说明 |
|
|
109
|
+
|------|--------|------|
|
|
110
|
+
| `bootstrap_servers` | `["localhost:9092"]` | Broker 地址列表,也接受逗号分隔字符串 |
|
|
111
|
+
| `security_protocol` | `"PLAINTEXT"` | 安全协议 |
|
|
112
|
+
| `sasl_mechanism` | `None` | SASL 机制 |
|
|
113
|
+
| `sasl_username` | `None` | SASL 用户名 |
|
|
114
|
+
| `sasl_password` | `None` | 建议通过 `KAFKA__SASL_PASSWORD` 环境变量注入 |
|
|
115
|
+
|
|
116
|
+
### 4. message_queue fixtures 环境配置感知
|
|
117
|
+
|
|
118
|
+
**影响文件**: `src/df_test_framework/testing/fixtures/message_queue.py`
|
|
119
|
+
|
|
120
|
+
`rabbitmq_config` / `kafka_config` fixtures 新增从 `FrameworkSettings` 读取连接配置的逻辑,优先级如下:
|
|
121
|
+
|
|
122
|
+
1. conftest.py 中用户自定义的 `rabbitmq_config` / `kafka_config` fixture(完全覆盖)
|
|
123
|
+
2. `config/environments/*.yaml` 的 `rabbitmq:` / `kafka:` 配置段(自动读取)
|
|
124
|
+
3. localhost 默认值(向后兼容)
|
|
125
|
+
|
|
126
|
+
与 `db_config` / `redis_config` fixtures 的设计模式完全一致。
|
|
127
|
+
|
|
128
|
+
**YAML 配置示例**:
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
# config/environments/test.yaml
|
|
132
|
+
rabbitmq:
|
|
133
|
+
host: mq.test.example.com
|
|
134
|
+
port: 5672
|
|
135
|
+
username: admin
|
|
136
|
+
# password 放 config/secrets/.env.local: RABBITMQ__PASSWORD=...
|
|
137
|
+
|
|
138
|
+
kafka:
|
|
139
|
+
bootstrap_servers:
|
|
140
|
+
- broker1.test.example.com:9092
|
|
141
|
+
# security_protocol: SASL_PLAINTEXT
|
|
142
|
+
# sasl_mechanism: PLAIN
|
|
143
|
+
# sasl_username: user
|
|
144
|
+
# sasl_password 放 config/secrets/.env.local: KAFKA__SASL_PASSWORD=...
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 5. 脚手架模板更新
|
|
148
|
+
|
|
149
|
+
**影响文件**: `cli/templates/generators/env_files.py`、`cli/templates/project/enhanced_gitignore.py`
|
|
150
|
+
|
|
151
|
+
- `config/base.yaml` 模板新增 MSSQL / PostgreSQL 配置示例注释
|
|
152
|
+
- `config/base.yaml` 模板新增 RabbitMQ / Kafka 配置示例注释
|
|
153
|
+
- `.gitignore` 模板新增 `!config/secrets/.env.local.example` 白名单(保留示例文件)
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 迁移指南
|
|
158
|
+
|
|
159
|
+
### 现有 MySQL 项目:无需修改
|
|
160
|
+
|
|
161
|
+
`dialect` 字段默认为 `None`,框架回退到 MySQL 行为,完全兼容。
|
|
162
|
+
|
|
163
|
+
### 现有 MQ 测试项目:无需修改
|
|
164
|
+
|
|
165
|
+
`rabbitmq:` / `kafka:` 字段默认为 `None`,fixtures 回退到 localhost 默认值,行为与 v4.2.x 完全一致。
|
|
166
|
+
|
|
167
|
+
### 切换到 MSSQL
|
|
168
|
+
|
|
169
|
+
1. 安装 ODBC Driver([微软官方文档](https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server))
|
|
170
|
+
2. 安装额外依赖:`uv sync --extra database-mssql`
|
|
171
|
+
3. 修改 YAML 配置添加 `dialect: mssql`
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 相关文档
|
|
176
|
+
|
|
177
|
+
- [配置系统使用指南](../guides/config_guide.md) - FrameworkSettings 字段说明
|
|
178
|
+
- [数据库访问指南](../guides/database_guide.md) - 多方言配置示例
|
|
179
|
+
- [消息队列使用指南](../guides/message_queue.md) - YAML 环境配置用法
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# v4.3.1 发布说明
|
|
2
|
+
|
|
3
|
+
**发布日期**: 2026-04-16
|
|
4
|
+
**类型**: 补丁版本(Patch Release)
|
|
5
|
+
**主题**: HTTP 方法 @overload 类型重载
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
v4.3.1 为 `BaseAPI` 和 `AsyncBaseAPI` 的所有 HTTP 方法(`get / post / put / delete / patch`)补充了 `@overload` 类型重载,提升 IDE 类型推断精度,无任何运行时行为变更。
|
|
12
|
+
|
|
13
|
+
**向后兼容**:纯类型签名改进,无 API 变更。
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 改进内容
|
|
18
|
+
|
|
19
|
+
### `@overload` 类型重载 - `BaseAPI` / `AsyncBaseAPI`
|
|
20
|
+
|
|
21
|
+
**影响文件**:
|
|
22
|
+
- `src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py`
|
|
23
|
+
- `src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py`
|
|
24
|
+
|
|
25
|
+
为每个 HTTP 方法新增两组 `@overload`:
|
|
26
|
+
|
|
27
|
+
| 调用签名 | 返回类型 |
|
|
28
|
+
|---------|---------|
|
|
29
|
+
| `model: type[T]` | `T` |
|
|
30
|
+
| `model: None`(默认) | `dict[str, Any]` |
|
|
31
|
+
|
|
32
|
+
**效果**:调用方无需手动强制类型转换,IDE/mypy 可直接推断出正确类型。
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
# 之前:返回类型为 T | dict[str, Any],需要手动 cast
|
|
36
|
+
user = api.get("/users/1", model=UserModel) # 类型: UserModel | dict
|
|
37
|
+
|
|
38
|
+
# 之后:精准推断
|
|
39
|
+
user = api.get("/users/1", model=UserModel) # 类型: UserModel
|
|
40
|
+
data = api.get("/users/1") # 类型: dict[str, Any]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
涵盖方法:`get`、`post`、`put`、`delete`、`patch`(同步 + 异步各 5 个,共 10 个方法)。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 升级指引
|
|
48
|
+
|
|
49
|
+
直接升级,无需修改任何代码。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "df-test-framework"
|
|
3
|
-
version = "4.
|
|
3
|
+
version = "4.3.1"
|
|
4
4
|
description = "基于交互模式的现代化测试自动化框架,支持多种测试场景"
|
|
5
5
|
authors = [{name = "DF QA Team", email = "qa@example.com"}]
|
|
6
6
|
readme = "README_PYPI.md"
|
|
@@ -75,6 +75,10 @@ database-async = [
|
|
|
75
75
|
"asyncpg>=0.29.0", # PostgreSQL 异步驱动
|
|
76
76
|
"aiosqlite>=0.20.0", # SQLite 异步驱动
|
|
77
77
|
]
|
|
78
|
+
database-mssql = [
|
|
79
|
+
"pyodbc>=5.1.0", # MSSQL 同步驱动(mssql+pyodbc)
|
|
80
|
+
"aioodbc>=0.5.0", # MSSQL 异步驱动(mssql+aioodbc,可选)
|
|
81
|
+
]
|
|
78
82
|
kafka = [
|
|
79
83
|
"confluent-kafka>=2.12.0", # Kafka客户端 - 最新版本,提供 Windows 预编译 wheel
|
|
80
84
|
]
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
|
-
DF 测试自动化框架 v4.
|
|
2
|
+
DF 测试自动化框架 v4.3.1
|
|
3
3
|
|
|
4
4
|
企业级测试平台架构升级,基于五层架构 + 事件驱动 + 可观测性。
|
|
5
5
|
|
|
6
|
+
v4.3.1 核心特性 - HTTP 方法 @overload 类型重载:
|
|
7
|
+
- 🔧 `BaseAPI` / `AsyncBaseAPI` 的 get/post/put/delete/patch 方法新增 `@overload`
|
|
8
|
+
- ✅ IDE 精准类型推断:`model=SomeModel` → 返回 `SomeModel`,`model=None` → 返回 `dict[str, Any]`
|
|
9
|
+
|
|
6
10
|
v4.2.2 核心特性 - 依赖升级 + 脚手架模板修复:
|
|
7
11
|
- 🔧 升级依赖后枚举类统一改用 `StrEnum`(原 `str, Enum` 写法)
|
|
8
12
|
- 🐛 修复脚手架模板中 `{{}}` 残留导致生成文件含错误字典字面量
|
|
@@ -156,7 +160,7 @@ v3.18.1 特性:
|
|
|
156
160
|
- 🔄 Unit of Work 模式支持(v3.7)
|
|
157
161
|
"""
|
|
158
162
|
|
|
159
|
-
__version__ = "4.
|
|
163
|
+
__version__ = "4.3.1"
|
|
160
164
|
__author__ = "DF QA Team"
|
|
161
165
|
|
|
162
166
|
# ==============================================================================
|