df-test-framework 4.8.0__tar.gz → 4.9.0__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.8.0 → df_test_framework-4.9.0}/AGENTS.md +2 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CHANGELOG.md +100 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CLAUDE.md +2 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/PKG-INFO +2 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/README.md +2 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ESSENTIAL_DOCS.md +2 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/README.md +1 -1
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/assertions_guide.md +67 -2
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data_cleanup.md +80 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/README.md +10 -3
- df_test_framework-4.9.0/docs/releases/v4.8.1.md +136 -0
- df_test_framework-4.9.0/docs/releases/v4.9.0.md +204 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/pyproject.toml +1 -1
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/__init__.py +19 -1
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/gmcrypto.py +11 -4
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/__init__.py +13 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/__init__.py +14 -0
- df_test_framework-4.9.0/src/df_test_framework/testing/assertions/waiting.py +283 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/__init__.py +17 -0
- df_test_framework-4.9.0/src/df_test_framework/testing/data/naming.py +400 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/__init__.py +4 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/core.py +62 -10
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/env_plugin.py +5 -1
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_gmcrypto.py +29 -2
- df_test_framework-4.9.0/tests/testing/assertions/test_waiting.py +210 -0
- df_test_framework-4.9.0/tests/testing/data/test_naming.py +338 -0
- df_test_framework-4.9.0/tests/testing/fixtures/test_cleanup_scopes_integration.py +193 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_core.py +28 -8
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_env_plugin.py +5 -5
- df_test_framework-4.9.0/uv.lock +2773 -0
- df_test_framework-4.8.0/uv.lock +0 -2665
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.editorconfig +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.env.example +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitattributes +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/lint.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/release.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/security.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/test.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitignore +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitleaks.toml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitleaksignore +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.pre-commit-config.yaml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.python-version +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CONTRIBUTING.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/README_PYPI.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/CONTRIBUTOR_GUIDE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/FAQ.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/LEARNING_PATH.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/clients.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/context.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/events.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/exceptions.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/middleware.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/protocols.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/types.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/databases.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/drivers.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/extensions.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/infrastructure.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/patterns.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/testing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/CODE_STRUCTURE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/config-driven-design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/config-management-analysis.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/ui-observability-design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/v3_complete_draft.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/v3_final_draft.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/overview.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/v2-architecture.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/extension-points.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/multi-project-reuse.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/observability-architecture.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/observability-modernization.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/test-type-support.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/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.8.0 → df_test_framework-4.9.0}/docs/archive/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/observability-config-design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ui-best-practices-2026.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/web-architecture-consistency-design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/web-event-driven-comparison.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/async_database_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/async_http_client.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/httpx_advanced_usage.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/logging_configuration.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/logging_pytest_integration.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/modern_logging_best_practices.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/repository_uow_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/111.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/summary.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/v1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/migration/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/async_http_client_design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/extensions.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/ui-testing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/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.8.0 → df_test_framework-4.9.0}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/architecture.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/best-practices.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/config-integration-guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/optimization-report.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/publishing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/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.8.0 → df_test_framework-4.9.0}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/github-actions.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/gitlab-ci.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/RELEASE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/VERSION_CONTROL_RULES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/local-development.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/DECIMAL_GUIDE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/allure_plugin.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/async_api_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/auth_session_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/bootstrap_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/config_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/database_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/decorators_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/distributed_tracing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/event_bus_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/extensions.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/factory_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/fixture_chain_pattern.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/fixtures_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/graphql_client.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/grpc_client.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/helpers_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/http_client_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/integration-guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/local_debug_quickstart.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/logging_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/message_queue.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/middleware_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/mocking.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/monitoring_plugin.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/openapi_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/plugin_hooks_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/plugins_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/prometheus_metrics.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/redis_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/resilience_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/sanitize_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/scaffold_cli_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/service_client_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/storage.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/telemetry_guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data_pipeline_design.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/testing-development.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/web-ui-testing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/migration/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/migration/v3-to-v4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.0.0-alpha.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.1.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.10.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.11.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.11.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.12.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.12.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.13.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0_completion_report.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0_implementation_complete.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.16.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.1-bugfix.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.19.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.2.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.20.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.21.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.22.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.22.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.23.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.24.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.25.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.26.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.27.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.28.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.28.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.29.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.3.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.30.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.31.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.32.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.33.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.34.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.34.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.5.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.6.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.7.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.36.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.36.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.37.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.10.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.5.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.7.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.8.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.9.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.39.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.39.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.4.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.40.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.41.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.41.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.42.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.43.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.44.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.45.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.5.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.7.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.8.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.9.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.3.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.3.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.5.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.6.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.6.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.1.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.2.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.3.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.4.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.5.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.8.0.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/skills/write-code.zip +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/skills/write-test.zip +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/common-errors.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/debugging-guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/BEST_PRACTICES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/QUICK_REFERENCE.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/QUICK_START.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/USER_MANUAL.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/ci-cd.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/code-generation.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/configuration.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/cross-project-sharing.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/debugging.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/examples.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/multi-repo.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/nested-settings-guide.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/security-best-practices.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/database_operations.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/http_client_usage.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/redis_cache.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/storage_usage.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/custom_providers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/custom_settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/with_extensions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_with_fixtures.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/builder_pattern.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/combined_patterns.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/repository_pattern.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/allure_enhancement_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/custom_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/data_factory_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/environment_validator_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/monitoring_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/mq_monitor_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/notification_extension.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/basic_ui_test.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/page_object_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/kafka_basic.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/kafka_ssl.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rabbitmq_basic.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rabbitmq_topic.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rocketmq-broker.conf +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rocketmq_basic.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/02_profile_configuration.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/03_runtime_overrides.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/04_observability.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/02_repository_v37.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/05_project_uow.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/fetch_swagger.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/security-scan.bat +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/security-scan.sh +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/bootstrap.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/providers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/runtime.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/async_database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/uow.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/__main__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/cicd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/env.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/init_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/interactive.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/main.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/constants.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/default_http_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/env.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/fixture_chain_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/full_conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/pyproject_toml.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/readme.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_clients.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/uow.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/utils.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/execution.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/propagation.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/events/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/events/types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/exceptions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/chain.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/decorator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/protocol.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/models/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/models/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/event.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/repository.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/telemetry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/schema.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/sources.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/bus.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/config.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/helper.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/matchers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/response.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/builders/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/examples.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/base.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/_registry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/context.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/dataset.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/reporter.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/resolver.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/debugging/console.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/actions_class.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/api_class.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/service_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/ui_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/allure.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/auth.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/http_recorder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/message_queue.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/ui.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/data_pipeline.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/debug.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/markers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/README.md +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_bootstrap.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_plugin_middlewares.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_providers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_runtime.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_models.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_models.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_request.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_response.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_event_publisher.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_async_database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_database.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_database_factory.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_query_builder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_repositories.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_uow.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_kafka_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_local_file.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_oss.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_s3.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_env_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_generate_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_init_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_interactive_cmd.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_main.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_utils.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/conftest.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_event.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_repository.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_telemetry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_context.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_event_types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_events.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_middleware.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/config/test_loader.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/config/test_middleware_schema.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/context/test_carriers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/events/test_bus.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_observer.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_performance.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_registry.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_types.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/plugins/test_manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/sanitize/test_service.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/test_facade.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/test_noop.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_bootstrap.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_helpers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_logging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_pipeline.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_runtime.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_settings.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_sources.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_context.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_decorators.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_exporters.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_integrations.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_interceptors.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_manager.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_config_environment.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_event_observability.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_factory_assertions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_middleware_chain.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/migration/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/test_json_to_model_generator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/test_json_schema.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/test_matchers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/test_pipeline.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/test_pipeline_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_builders.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_data_generator.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_factories.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/debugging/test_console_debug_observer.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_actions_class.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_api_class.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_service_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_ui_client.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_allure_fixture.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_cleanup.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_http_recorder.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_lifecycle_hooks.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_plugin_lifecycle_integration.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_database_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_http_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_redis_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_time_mock.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_debug_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_logging_plugin.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_markers.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/reporting/test_allure_observer.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_allure_helper.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_assertions.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_data_loaders.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_factories_presets.py +0 -0
- {df_test_framework-4.8.0 → df_test_framework-4.9.0}/verify_fixes.py +0 -0
|
@@ -8,8 +8,8 @@ This file provides guidance to Codex (Codex.ai/code) when working with code in t
|
|
|
8
8
|
|
|
9
9
|
**DF Test Framework** - 现代化 Python 测试自动化框架
|
|
10
10
|
|
|
11
|
-
- **版本**: v4.
|
|
12
|
-
- **更新时间**: 2026-08-
|
|
11
|
+
- **版本**: v4.9.0
|
|
12
|
+
- **更新时间**: 2026-08-11
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -7,6 +7,106 @@
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [4.9.0] - 2026-08-11
|
|
11
|
+
|
|
12
|
+
### ⚠️ 破坏性变更
|
|
13
|
+
|
|
14
|
+
- **`NamingRegistry.case_match_patterns()` 对不可直接认领的规则改为抛错**。声明了
|
|
15
|
+
`joins_via` 或非 `Lifecycle.CASE` 的规则调用它会 `ValueError`。改用
|
|
16
|
+
`claimable_keys()` 遍历,或先用 `is_directly_claimable()` 判断。
|
|
17
|
+
`NamingRegistry` 在 v4.8.1 才引入,受影响面小,故未升 MAJOR。
|
|
18
|
+
|
|
19
|
+
### 🐛 修复
|
|
20
|
+
|
|
21
|
+
- **SM2 短私钥导致偶发失败**(`infrastructure/helpers/gmcrypto.py`):`_normalize_private_key`
|
|
22
|
+
此前只接受恰好 32 字节的裸私钥。私钥本质是大整数,首字节为 0 时最短表示只有 31 字节,
|
|
23
|
+
实测 `gmalg.generate_keypair()` 约 **1/256** 的概率产出(3000 次采样中 8 次)。
|
|
24
|
+
现对 1~32 字节裸私钥左侧补零,空值与超长仍拒绝。
|
|
25
|
+
- 影响:v4.8.1 起任何自行生成密钥对的调用方都会周期性踩到,且失败与输入无关、难以复现。
|
|
26
|
+
框架自身的国密测试用 class 级 keypair fixture,一旦踩中整个测试类一起失败。
|
|
27
|
+
|
|
28
|
+
- **`case_match_patterns()` 违背框架自己的契约**(`testing/data/naming.py`):`NamingRule`
|
|
29
|
+
文档写明声明了 `joins_via` 的字段"只能跟父对象级联删除",该方法却照样返回其宽匹配式,
|
|
30
|
+
把防误删的责任推给每个调用方。现在直接拒绝,并新增 `is_directly_claimable()`
|
|
31
|
+
与 `claimable_keys()` 表达这一语义。
|
|
32
|
+
- 判定同时覆盖生命周期:非 `Lifecycle.CASE` 的规则同样不可直接认领。此前 `lifecycle`
|
|
33
|
+
字段只是摆设 —— 合法的 `BASELINE` 规则会被 `case_match_patterns()` 当作用例级返回,
|
|
34
|
+
又被 `self_check()` 判成"会命中基准池前缀",自相矛盾。
|
|
35
|
+
|
|
36
|
+
### ✨ 新增
|
|
37
|
+
|
|
38
|
+
- **`wait_until` / `async_wait_until` 轮询等待**(`testing/assertions/waiting.py`):等异步结果落地的通用封装,
|
|
39
|
+
超时抛 `WaitTimeoutError`(继承 `AssertionError`,pytest 报成断言失败),消息带最后一次探测值
|
|
40
|
+
和探测次数。
|
|
41
|
+
- 动机:业务项目手写了 **52 个**形状相同的 `_wait_for_*`,每个都要重复 deadline、循环、间隔、
|
|
42
|
+
超时报错四件事。写 `time.sleep(5)` 只要一行、写轮询要十行,工具缺位直接导致盲等泛滥 ——
|
|
43
|
+
某个业务文件里一个 5 秒盲等被用了 7 次,占该文件 44 秒耗时中的 35 秒。
|
|
44
|
+
- `ready` 判定默认为 `bool`,覆盖最常见的"查到行就继续";剩余时间不足一个间隔时按剩余时间睡,
|
|
45
|
+
不会睡过 `timeout`;探测函数自身抛错立即传播,不会被当成超时吞掉。
|
|
46
|
+
- 参数在入口校验:`timeout` 非负有限、`interval` 正有限。`NaN` 会让比较恒假从而死循环,
|
|
47
|
+
`inf` 让超时形同虚设,负 `interval` 要等到 `time.sleep` 才抛错、报错位置离病因很远。
|
|
48
|
+
`timeout=0` 合法,表示只探测一次。
|
|
49
|
+
|
|
50
|
+
- **`assert_consistently` / `async_assert_consistently`**:否定断言的框架抽象 ——
|
|
51
|
+
在整个窗口内反复采样,要求条件**始终**成立。用于幂等(重推不产生新流水)、被拒后不落库、
|
|
52
|
+
MQ 重投不重复扣款;这类场景 `wait_until` 帮不上忙(条件一开始就成立,它立刻返回)。
|
|
53
|
+
比裸 `time.sleep(n)` 强在:能抓到"中途变了又变回来"、一旦破坏立即失败而非等满、
|
|
54
|
+
报错带第几次采样和当时的值。
|
|
55
|
+
|
|
56
|
+
- **`like_to_regex(pattern, case_sensitive=...)`**:声明从"语义与 MySQL 一致"降级为
|
|
57
|
+
**词法近似**,并支持大小写开关。框架支持 MySQL / MSSQL / PostgreSQL / SQLite 四种方言,
|
|
58
|
+
而它们的 `LIKE` 并不等价:
|
|
59
|
+
- 大小写——MySQL 与 MSSQL 默认排序规则不敏感、SQLite 对 ASCII 不敏感、PostgreSQL 敏感;
|
|
60
|
+
- 字符类——MSSQL 的 `[abc]` 是字符类,其余三家当普通字符;
|
|
61
|
+
- 转义——`NO_BACKSLASH_ESCAPES` 与显式 `ESCAPE` 会改变转义符。
|
|
62
|
+
|
|
63
|
+
`self_check()` 因此改为按**最宽松口径过近似**(大小写不敏感),并检出模式中含 `[`、`]`
|
|
64
|
+
这类随方言改变含义的字符。安全检查里误报只是让人收紧模式,漏报会真删数据 ——
|
|
65
|
+
修复前的实测:模式 `AUTO_CASE_商品_%` 对值 `auto_case_商品_x` 自检判"安全",
|
|
66
|
+
而 MySQL 默认排序规则下 `DELETE` 会命中。清理 SQL 仍应显式写 `ESCAPE` 并明确大小写语义。
|
|
67
|
+
|
|
68
|
+
- **`cleanup_module` / `cleanup_session` fixture**:`cleanup` 之外新增 module 与 session 作用域,
|
|
69
|
+
三者构造逻辑同源,只在作用域上不同。
|
|
70
|
+
- 动机:`cleanup` 此前只有 function 级,而 pytest 规则下依赖它的前置 fixture 也只能是 function 级 ——
|
|
71
|
+
业务项目因此无法让同模块用例共享前置数据,每条用例都要把"供应商→通道→商品→客户"整条链
|
|
72
|
+
重建一遍。这是框架施加的硬约束,项目层绕不过去。
|
|
73
|
+
- 能否共享的判据是断言锚点:锚在自己的业务单据上可共享;锚在共享对象的总量或状态
|
|
74
|
+
(余额、可用库存、流水条数)上仍须用 function 级 `cleanup`。同一判据也决定用例能否并行。
|
|
75
|
+
- `@pytest.mark.keep_data` 是函数级标记,宽作用域下取不到;`--keep-test-data` 与
|
|
76
|
+
`KEEP_TEST_DATA` 配置照常生效。
|
|
77
|
+
|
|
78
|
+
## [4.8.1] - 2026-08-11
|
|
79
|
+
|
|
80
|
+
### ✨ 新增
|
|
81
|
+
|
|
82
|
+
- **测试数据命名注册表 `NamingRegistry`**(`testing/data/naming.py`,从 master_test 项目下沉):
|
|
83
|
+
把「生成名字」(`template`)、「认领名字」(`match` SQL LIKE 模式)、「字段上限」(`max_length`)
|
|
84
|
+
绑在同一条 `NamingRule` 里,生成端与兜底清理端读同一份定义,消除两端手抄漂移。
|
|
85
|
+
- `make(key, test_id, suffix)`:未登记的 key 抛 `KeyError`(逼迫新命名先登记),超长抛
|
|
86
|
+
`ValueError`(不静默截断)。
|
|
87
|
+
- `scoped(test_id, label)`:一条用例造多套前置数据时显式附加场景标签。宽字段(`{tid}` 模板)
|
|
88
|
+
把完整标签放在语义位(域标签之后、test_id 之前);长度吃紧字段(`{sid}` 模板)让标签参与
|
|
89
|
+
短 id 哈希保证唯一,不占名字文本。标签限定 `[A-Za-z0-9_-]`,拒绝嵌套。
|
|
90
|
+
- `self_check(sample_test_id, protected_names=...)`:自洽校验(模板产出必能被自己的模式认领、
|
|
91
|
+
任何模式不许命中基准池前缀与保护名单、`joins_via` 指向已登记规则),项目单测一行断言即获持续保护。
|
|
92
|
+
- `short_id()`(哈希短 id)、`like_to_regex()`(MySQL LIKE 语义)、`Lifecycle`
|
|
93
|
+
(`AUTO_BASE` 基准池 / `AUTO_CASE` 用例级前缀约定)一并公开。
|
|
94
|
+
- 规则表由各项目自行登记,框架只提供机制。顶层导出 `NamingRegistry` / `NamingRule`。
|
|
95
|
+
|
|
96
|
+
### 🔧 修复
|
|
97
|
+
|
|
98
|
+
- **清理 pytest 10 将移除的弃用 API**(pytest 9.1 起告警):
|
|
99
|
+
- `testing/fixtures/core.py`、`testing/plugins/env_plugin.py` 不再用 `config.inicfg` 做
|
|
100
|
+
「ini 项是否已注册」的守卫,改为直接 `config.getini()` 并捕获 `ValueError`。两个 ini 项
|
|
101
|
+
(`df_settings_class` / `df_plugins`)注册时默认值均为空串,`or` 优先级链行为不变。
|
|
102
|
+
- `core.py` 抽出私有 helper `_read_ini()`,两处调用点共用。
|
|
103
|
+
|
|
104
|
+
### 🔧 依赖
|
|
105
|
+
|
|
106
|
+
- 开发依赖整体升级:`pytest` 9.0.3 → 9.1.1、`ruff` 0.15.14 → 0.16.2、`redis` 7.4.0 → 8.1.0、
|
|
107
|
+
`sqlalchemy` 2.0.50 → 2.0.51、`structlog` 25.5.0 → 26.1.0 等。
|
|
108
|
+
- `openapi-spec-validator` 仍锁定 0.7.2:上游 `prance[osv]` 约束为 `~=0.7.1`,无法升至 0.9.x。
|
|
109
|
+
|
|
10
110
|
## [4.8.0] - 2026-08-10
|
|
11
111
|
|
|
12
112
|
### ✨ 新增
|
|
@@ -8,8 +8,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
8
8
|
|
|
9
9
|
**DF Test Framework** - 现代化 Python 测试自动化框架
|
|
10
10
|
|
|
11
|
-
- **版本**: v4.
|
|
12
|
-
- **更新时间**: 2026-08-
|
|
11
|
+
- **版本**: v4.9.0
|
|
12
|
+
- **更新时间**: 2026-08-11
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: df-test-framework
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.9.0
|
|
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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# 断言系统使用指南
|
|
2
2
|
|
|
3
|
-
> **版本**:
|
|
3
|
+
> **版本**: v4.9.0 | **更新**: 2026-08-11
|
|
4
4
|
> **引入版本**: v3.30.0
|
|
5
5
|
> **模块**: `df_test_framework.testing.assertions`
|
|
6
6
|
|
|
7
|
-
断言系统提供丰富的断言辅助方法,简化 API 测试代码。包含 HTTP 响应断言、JSON Schema
|
|
7
|
+
断言系统提供丰富的断言辅助方法,简化 API 测试代码。包含 HTTP 响应断言、JSON Schema 验证、自定义匹配器、异步结果等待四大功能模块。
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -437,6 +437,71 @@ matcher.assert_matches(50, message="年龄必须在 1-100 之间")
|
|
|
437
437
|
|
|
438
438
|
---
|
|
439
439
|
|
|
440
|
+
## 异步结果的等待(v4.9.0)
|
|
441
|
+
|
|
442
|
+
测真实系统时,写库、发 MQ、跑定时任务都是异步完成的,断言前必须等。
|
|
443
|
+
盲等固定秒数既慢又不可靠 —— 等短了偶发失败,等长了整条回归被拖垮。
|
|
444
|
+
|
|
445
|
+
```python
|
|
446
|
+
from df_test_framework import wait_until
|
|
447
|
+
|
|
448
|
+
# 等到查得到行(默认判定为「返回值为真」)
|
|
449
|
+
order = wait_until(
|
|
450
|
+
lambda: db.query_one("SELECT * FROM orders WHERE no = :n", {"n": no}),
|
|
451
|
+
message=f"订单 {no} 未落库",
|
|
452
|
+
)
|
|
453
|
+
|
|
454
|
+
# 自定义判定
|
|
455
|
+
wait_until(
|
|
456
|
+
lambda: count_trades(order_no),
|
|
457
|
+
lambda n: n >= 2,
|
|
458
|
+
timeout=20,
|
|
459
|
+
interval=0.5,
|
|
460
|
+
message="调价流水未落齐",
|
|
461
|
+
)
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
超时抛 `WaitTimeoutError`(继承 `AssertionError`,pytest 报成断言失败),
|
|
465
|
+
消息里带**最后一次探测到的值**和探测次数 —— 排查时最需要的就是它:
|
|
466
|
+
|
|
467
|
+
```
|
|
468
|
+
调价流水未落齐(超时 20s,实际等待 20.0s,探测 40 次,最后一次结果:1)
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
异步探测用 `async_wait_until`,签名一致。
|
|
472
|
+
|
|
473
|
+
### 否定断言用 `assert_consistently`
|
|
474
|
+
|
|
475
|
+
`wait_until` 只用于等「应该发生的事」。断言「不该发生」——幂等、被拒后不落库、
|
|
476
|
+
MQ 重投不重复扣款——轮询帮不上忙:条件一开始就成立,它立刻返回,等于没等。
|
|
477
|
+
这类场景要观察完整窗口:
|
|
478
|
+
|
|
479
|
+
```python
|
|
480
|
+
from df_test_framework import assert_consistently
|
|
481
|
+
|
|
482
|
+
assert_consistently(
|
|
483
|
+
lambda: count_trades(order_no),
|
|
484
|
+
lambda n: n == 1,
|
|
485
|
+
duration=3,
|
|
486
|
+
interval=0.5,
|
|
487
|
+
message="重复回调不该产生第二条流水",
|
|
488
|
+
)
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
比裸 `time.sleep(3)` 强在三点:窗口内多次采样提高「中途变过又变回来」被发现的
|
|
492
|
+
概率;一旦发现破坏立即失败而不必等满;报错带第几次采样和当时的值。
|
|
493
|
+
|
|
494
|
+
```
|
|
495
|
+
重复回调不该产生第二条流水(窗口 3s,第 1.5s 的第 4 次采样已不满足,当时结果:2)
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
采样是离散的:短于 `interval` 的瞬时变化仍可能错过,缩小 `interval` 只提高概率、
|
|
499
|
+
不提供保证。要确定性捕获中间态得靠事件或变更日志,不是轮询。
|
|
500
|
+
|
|
501
|
+
异步版本是 `async_assert_consistently`。
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
440
505
|
## 实战示例
|
|
441
506
|
|
|
442
507
|
### 完整的 API 测试
|
|
@@ -146,6 +146,86 @@ def cleanup_orders(request, database):
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
+
### 2.6 NamingRegistry - 命名注册表(v4.8.1)
|
|
150
|
+
|
|
151
|
+
清理有两条腿:用例正常结束时 cleanup fixture 按登记的 ID 清;用例崩溃/被中断时,
|
|
152
|
+
兜底脚本只能按**名字模式**认领残留。命名注册表让生成端与认领端读同一份定义,
|
|
153
|
+
消除两端各写一份手抄定义导致的漂移。
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
from df_test_framework.testing.data import NamingRegistry, NamingRule, scoped
|
|
157
|
+
|
|
158
|
+
REGISTRY = NamingRegistry([
|
|
159
|
+
NamingRule(
|
|
160
|
+
key="supplier_name",
|
|
161
|
+
table="supplier",
|
|
162
|
+
column="SUPPLIER_NAME",
|
|
163
|
+
template="AUTO_CASE_供应商_{tid}", # {tid} 完整 test_id,{sid} 8 位哈希
|
|
164
|
+
match="AUTO_CASE_供应商_%", # 兜底清理按此认领,必须锚定
|
|
165
|
+
max_length=100, # 超长直接报错,不静默截断
|
|
166
|
+
),
|
|
167
|
+
])
|
|
168
|
+
|
|
169
|
+
# 生成
|
|
170
|
+
name = REGISTRY.make("supplier_name", test_id)
|
|
171
|
+
|
|
172
|
+
# 一条用例造多套前置数据时,用 scoped 附加场景标签(完整保留语义)
|
|
173
|
+
name = REGISTRY.make("supplier_name", scoped(test_id, "np_agree"))
|
|
174
|
+
# → AUTO_CASE_供应商_np_agree_ORD2026…(宽字段:标签在语义位)
|
|
175
|
+
# {sid} 模板的短字段则让标签参与哈希,不占文本
|
|
176
|
+
|
|
177
|
+
# 清理脚本取认领模式
|
|
178
|
+
patterns = REGISTRY.case_match_patterns("supplier_name")
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
项目单测一行断言即可持续校验「模板产出必能被自己认领、绝不误伤保护名单」:
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
def test_naming_registry_is_consistent():
|
|
185
|
+
assert REGISTRY.self_check(
|
|
186
|
+
"ORD202608071318033693331512",
|
|
187
|
+
protected_names=("基准池样本", "同事手工数据样本"),
|
|
188
|
+
) == []
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
生命周期约定:`AUTO_BASE`(基准池,兜底清理永不触碰)/ `AUTO_CASE`(用例级,
|
|
192
|
+
随用随清)。规则表由各项目自行登记,框架只提供机制。
|
|
193
|
+
|
|
194
|
+
### 2.7 cleanup 的三种作用域(v4.9.0)
|
|
195
|
+
|
|
196
|
+
```python
|
|
197
|
+
cleanup # function 级,每条用例结束就清(默认)
|
|
198
|
+
cleanup_module # module 级,整个模块跑完才清
|
|
199
|
+
cleanup_session # session 级,整轮跑完才清
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
作用域决定**前置数据能不能跨用例共享**:前置 fixture 一旦依赖 function 级的
|
|
203
|
+
`cleanup`,pytest 规则下它自己也只能是 function 级,于是每条用例都要把前置链
|
|
204
|
+
重建一遍。改依赖 `cleanup_module` 后才能这样写:
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
@pytest.fixture(scope="module")
|
|
208
|
+
def shared_supplier(supplier_api, cleanup_module):
|
|
209
|
+
"""整个模块共用一个供应商,不再每条用例重建。"""
|
|
210
|
+
return create_supplier(supplier_api, cleanup_module)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**什么时候不能共享**:判据是断言锚在什么上。
|
|
214
|
+
|
|
215
|
+
| 断言锚点 | 能否共享 |
|
|
216
|
+
|---------|---------|
|
|
217
|
+
| 自己的业务单据(订单号、批次号) | ✅ 可共享 |
|
|
218
|
+
| 共享对象的总量或状态(余额、可用库存、某客户的流水条数) | ❌ 用 `cleanup` |
|
|
219
|
+
| 被测对象就是「创建过程」本身 | ❌ 用 `cleanup` |
|
|
220
|
+
| 要消耗或改变共享资源 | ❌ 用 `cleanup` |
|
|
221
|
+
|
|
222
|
+
这条判据同时决定了用例能不能并行:锚在自己单据上的,共享和并发都安全。
|
|
223
|
+
|
|
224
|
+
注意 `@pytest.mark.keep_data` 是函数级标记,宽作用域下取不到;
|
|
225
|
+
`--keep-test-data` 与 `KEEP_TEST_DATA` 配置照常生效。
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
149
229
|
## 3. 项目实现示例
|
|
150
230
|
|
|
151
231
|
### 3.1 简单列表模式
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
# Release Notes 发布说明索引
|
|
2
2
|
|
|
3
|
-
> 当前版本:**v4.
|
|
3
|
+
> 当前版本:**v4.9.0** · 最近更新:2026-08-11
|
|
4
4
|
|
|
5
5
|
完整变更摘要见 [CHANGELOG.md](../../CHANGELOG.md)。
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## v4.
|
|
9
|
+
## v4.9.x(当前系列)
|
|
10
10
|
|
|
11
11
|
| 版本 | 发布日期 | 核心特性 |
|
|
12
12
|
|------|----------|----------|
|
|
13
|
-
| **[v4.
|
|
13
|
+
| **[v4.9.0](v4.9.0.md)** ⭐ 当前 | 2026-08-11 | 轮询等待与观察窗口断言、cleanup 作用域扩展、命名认领契约落地、SM2 短私钥修复 |
|
|
14
|
+
|
|
15
|
+
## v4.8.x
|
|
16
|
+
|
|
17
|
+
| 版本 | 发布日期 | 核心特性 |
|
|
18
|
+
|------|----------|----------|
|
|
19
|
+
| [v4.8.1](v4.8.1.md) | 2026-08-11 | 测试数据命名注册表 `NamingRegistry` + pytest 10 弃用 API 清理 |
|
|
20
|
+
| [v4.8.0](v4.8.0.md) | 2026-08-10 | 国密 SM2/SM3/SM4 + 签名模块两层拆分(`build_sign_source` / `digest_sign`)|
|
|
14
21
|
|
|
15
22
|
## v4.7.x
|
|
16
23
|
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# v4.8.1 - 测试数据命名注册表 NamingRegistry + pytest 10 弃用 API 清理
|
|
2
|
+
|
|
3
|
+
**发布日期**: 2026-08-11
|
|
4
|
+
|
|
5
|
+
## 概述
|
|
6
|
+
|
|
7
|
+
本版本两件事:
|
|
8
|
+
|
|
9
|
+
- **`NamingRegistry`**:把测试数据的「怎么生成名字」和「兜底清理怎么认领这个名字」绑进同一份
|
|
10
|
+
定义。这套东西在 master_test 项目里已经跑了一段时间,本次下沉到框架。
|
|
11
|
+
- **pytest 10 弃用 API 清理**:pytest 9.1 开始对 `config.inicfg` 告警,框架内两处用法已改掉。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 新增
|
|
16
|
+
|
|
17
|
+
### 测试数据命名注册表 `NamingRegistry`
|
|
18
|
+
|
|
19
|
+
**要解决的问题**:共享测试环境里,用例造的数据得能被兜底脚本清掉,靠的是名字前缀。
|
|
20
|
+
但「生成名字」写在 fixture 里、「认领名字」写在清理脚本的 SQL LIKE 里,两边各抄一份。
|
|
21
|
+
改了一边忘了另一边,结果是数据悄悄堆积 —— 而且没有任何报错,直到某天环境被撑爆才发现。
|
|
22
|
+
|
|
23
|
+
`NamingRule` 把生成模板、认领模式、字段上限绑在一起,两端读同一份定义:
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from df_test_framework import NamingRegistry, NamingRule
|
|
27
|
+
from df_test_framework.testing.data.naming import Lifecycle
|
|
28
|
+
|
|
29
|
+
REGISTRY = NamingRegistry([
|
|
30
|
+
NamingRule(
|
|
31
|
+
key="supplier_name",
|
|
32
|
+
table="supplier", column="name",
|
|
33
|
+
template="AUTO_CASE_供应商_{tid}", # 生成
|
|
34
|
+
match="AUTO_CASE\\_供应商\\_%", # 认领(SQL LIKE)
|
|
35
|
+
max_length=64,
|
|
36
|
+
lifecycle=Lifecycle.CASE,
|
|
37
|
+
),
|
|
38
|
+
NamingRule(
|
|
39
|
+
key="login_name",
|
|
40
|
+
table="sys_user", column="login_name",
|
|
41
|
+
template="ac_{sid}", # varchar(30),塞不下可辨识前缀
|
|
42
|
+
match="ac\\_%",
|
|
43
|
+
max_length=30,
|
|
44
|
+
joins_via="supplier_name", # 认领不了,跟着父对象级联删
|
|
45
|
+
),
|
|
46
|
+
])
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**生成**:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
REGISTRY.make("supplier_name", test_id) # AUTO_CASE_供应商_t20260811_a1b2
|
|
53
|
+
REGISTRY.make("supplier_name", test_id, "电子面单") # 追加业务标签,计入长度校验
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`make()` 有两个刻意的「不宽容」设计:
|
|
57
|
+
|
|
58
|
+
| 情况 | 行为 | 为什么 |
|
|
59
|
+
|------|------|--------|
|
|
60
|
+
| key 未登记 | 抛 `KeyError` | 新命名必须先登记,否则它天然逃出清理覆盖 |
|
|
61
|
+
| 结果超长 | 抛 `ValueError` | 静默截断会把可辨识前缀切掉,认领模式再也匹配不上 |
|
|
62
|
+
|
|
63
|
+
**一条用例造多套数据**时用 `scoped()` 附加场景标签:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from df_test_framework.testing.data.naming import scoped
|
|
67
|
+
|
|
68
|
+
REGISTRY.make("supplier_name", scoped(test_id, "sender"))
|
|
69
|
+
REGISTRY.make("supplier_name", scoped(test_id, "receiver"))
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
标签的去向按模板分流 —— `{tid}` 宽字段把完整标签放在语义位(域标签之后、test_id 之前),
|
|
73
|
+
这样展示端截断只会吃掉没信息量的 test_id 尾部;`{sid}` 长度吃紧字段则让标签参与短 id 哈希,
|
|
74
|
+
保证唯一但不占名字文本。
|
|
75
|
+
|
|
76
|
+
**自洽校验**:项目单测一行断言,持续防止规则表自己长歪:
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
def test_naming_registry_self_consistent():
|
|
80
|
+
assert REGISTRY.self_check(SAMPLE_TEST_ID, protected_names=PROTECTED) == []
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
校验三件事:模板产出必须能被自己的 `match` 认领;任何模式都不许命中基准池前缀与保护名单
|
|
84
|
+
(否则兜底脚本会删掉不属于它的数据);`joins_via` 必须指向已登记的规则。
|
|
85
|
+
|
|
86
|
+
**生命周期**:`Lifecycle.BASELINE`(`AUTO_BASE`,基准池,跨用例复用,兜底清理永不触碰)与
|
|
87
|
+
`Lifecycle.CASE`(`AUTO_CASE`,用例级,随用随清)。枚举值即推荐前缀。
|
|
88
|
+
|
|
89
|
+
框架只提供机制,**规则表由各项目自行登记**。`NamingRegistry` / `NamingRule` 从包顶层导入;
|
|
90
|
+
`Lifecycle`、`scoped()`、`short_id()`(哈希短 id)、`like_to_regex()`(按 MySQL 语义把 LIKE
|
|
91
|
+
翻成正则,清理脚本可在 Python 侧预演匹配范围)从 `df_test_framework.testing.data.naming` 导入。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 修复
|
|
96
|
+
|
|
97
|
+
### pytest 10 弃用 API 清理
|
|
98
|
+
|
|
99
|
+
pytest 9.1 起,`config.inicfg` 会触发 `PytestRemovedIn10Warning`。框架内两处用它来做
|
|
100
|
+
「这个 ini 项注册了吗」的守卫:
|
|
101
|
+
|
|
102
|
+
- `testing/fixtures/core.py`
|
|
103
|
+
- `testing/plugins/env_plugin.py`
|
|
104
|
+
|
|
105
|
+
改为直接调 `config.getini()` 并捕获 `ValueError`。**行为完全等价** —— `df_settings_class`
|
|
106
|
+
与 `df_plugins` 注册时默认值均为空串,是 falsy,CLI > ini > 环境变量 > 默认的优先级链不变。
|
|
107
|
+
`core.py` 顺带抽出私有 helper `_read_ini()` 供两个调用点共用。
|
|
108
|
+
|
|
109
|
+
对使用方无影响,无需改动项目代码。
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 依赖
|
|
114
|
+
|
|
115
|
+
开发依赖整体升级,其中值得注意的:
|
|
116
|
+
|
|
117
|
+
| 包 | 变化 |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `pytest` | 9.0.3 → 9.1.1 |
|
|
120
|
+
| `ruff` | 0.15.14 → 0.16.2 |
|
|
121
|
+
| `redis` | 7.4.0 → 8.1.0 |
|
|
122
|
+
| `sqlalchemy` | 2.0.50 → 2.0.51 |
|
|
123
|
+
| `structlog` | 25.5.0 → 26.1.0 |
|
|
124
|
+
|
|
125
|
+
`openapi-spec-validator` 仍锁在 0.7.2(最新为 0.9.0):上游 `prance[osv]` 的约束是
|
|
126
|
+
`~=0.7.1`,锁死 0.7.x。等 prance 放宽后才能跟进。
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 升级
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
pip install --upgrade df-test-framework==4.8.1
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
无破坏性变更,直接升级即可。
|