df-test-framework 4.10.3__tar.gz → 4.10.4__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.10.3 → df_test_framework-4.10.4}/AGENTS.md +3 -3
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/CHANGELOG.md +78 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/CLAUDE.md +3 -3
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/PKG-INFO +2 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/README.md +2 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/ESSENTIAL_DOCS.md +2 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/README.md +1 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/DESIGN_STANDARDS.md +12 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/README.md +1 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +14 -6
- df_test_framework-4.10.4/docs/architecture/framework-capability-assessment.md +202 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/observability-architecture.md +16 -7
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/BACKLOG.md +22 -0
- df_test_framework-4.10.4/docs/development/config-ownership-plan.md +149 -0
- df_test_framework-4.10.4/docs/development/priority-four-completion.md +182 -0
- df_test_framework-4.10.4/docs/development/priority-issues-2026-11.md +191 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/bootstrap_guide.md +37 -10
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/config_guide.md +14 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/event_bus_guide.md +31 -187
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/sanitize_guide.md +13 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/README.md +3 -2
- df_test_framework-4.10.4/docs/releases/v4.10.4.md +44 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/pyproject.toml +2 -2
- df_test_framework-4.10.4/scripts/repro/config_env_split_2026_11.py +73 -0
- df_test_framework-4.10.4/scripts/repro/priority_issues_2026_11.py +134 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/smoke_config_release.py +2 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/__init__.py +7 -13
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/bootstrap/bootstrap.py +29 -4
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/bootstrap/providers.py +203 -23
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/bootstrap/runtime.py +37 -9
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/client.py +2 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +73 -52
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/client.py +2 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +82 -60
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +92 -68
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +8 -3
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +8 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/async_database.py +90 -75
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/database.py +90 -75
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/redis/async_redis.py +27 -26
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/redis/redis_client.py +27 -26
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/uow.py +15 -7
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/_event_utils.py +14 -7
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/app_actions.py +93 -57
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +93 -57
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/kafka/async_client.py +2 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +70 -52
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/async_client.py +2 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +91 -65
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +60 -44
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/baseline_cmd.py +10 -8
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/cleanup_cmd.py +10 -8
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/context/__init__.py +2 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/context/execution.py +14 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/context/propagation.py +12 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/base.py +9 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/discovery.py +35 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/events/bus.py +19 -11
- df_test_framework-4.10.4/src/df_test_framework/infrastructure/events/observation.py +46 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/logging/__init__.py +0 -14
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/logging/config.py +41 -30
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/logging/observability.py +21 -128
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/sanitize/__init__.py +7 -12
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/sanitize/service.py +69 -57
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +7 -4
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +12 -6
- df_test_framework-4.10.4/src/df_test_framework/testing/decorators/_deps.py +28 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/decorators/actions_class.py +2 -5
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/decorators/api_class.py +2 -5
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/decorators/service_client.py +3 -4
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/execution/concurrency.py +5 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/allure.py +22 -35
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/cleanup.py +81 -40
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/core.py +64 -50
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/debugging.py +24 -41
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/http_recorder.py +21 -14
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/message_queue.py +4 -24
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/metrics.py +18 -31
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/ui.py +10 -10
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/accessors.py +9 -1
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/logging_plugin.py +9 -7
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -2
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/reporting/allure/helper.py +7 -6
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/reporting/allure/observer.py +59 -140
- df_test_framework-4.10.4/tests/bootstrap/test_execution_scope.py +97 -0
- df_test_framework-4.10.4/tests/bootstrap/test_resource_ownership.py +85 -0
- df_test_framework-4.10.4/tests/bootstrap/test_runtime_composition.py +198 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/drivers/web/test_async_ui.py +4 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/drivers/web/test_modern_ui.py +2 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/messengers/test_mq_contract.py +61 -0
- df_test_framework-4.10.4/tests/cli/test_resource_lifecycle.py +62 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_event_types.py +1 -1
- df_test_framework-4.10.4/tests/infrastructure/config/test_config_ownership.py +354 -0
- df_test_framework-4.10.4/tests/infrastructure/events/test_output_isolation.py +222 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/sanitize/test_service.py +26 -45
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_observability_observer.py +19 -6
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/decorators/test_service_client.py +2 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_allure_fixture.py +7 -3
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_cleanup.py +17 -31
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_fixtures_debugging.py +26 -64
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_http_recorder.py +28 -35
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/reporting/test_allure_observer.py +6 -40
- df_test_framework-4.10.4/tests/testing/test_composition_regressions.py +180 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/uv.lock +9 -4
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.editorconfig +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.env.example +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.gitattributes +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/docs.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/lint.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/release.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/security.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.github/workflows/test.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.gitignore +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.gitleaks.toml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.gitleaksignore +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.pre-commit-config.yaml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/.python-version +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/CONTRIBUTING.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/README_PYPI.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/CONTRIBUTOR_GUIDE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/FAQ.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/LEARNING_PATH.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/context.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/events.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/exceptions.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/middleware.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/protocols.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/core/types.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/api-reference/extensions.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/CODE_STRUCTURE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/ARCHITECTURE_V4.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/PLUGIN_SYSTEM_V3.37.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/config-driven-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/config-management-analysis.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/design/ui-observability-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/observability-modernization.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/v3_complete_draft.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/v3_final_draft.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/overview.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/archive/versions/v2-architecture.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/extension-points.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/framework-positioning-notes.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/multi-project-reuse.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/national-crypto-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/test-type-support.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/ui-design-principles.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/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.10.3 → df_test_framework-4.10.4}/docs/archive/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/clients.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/core.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/databases.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/drivers.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/infrastructure.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/patterns.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/api-reference/testing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/observability-config-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/ui-best-practices-2026.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/web-architecture-consistency-design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/design/web-event-driven-comparison.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/async_database_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/async_http_client.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/httpx_advanced_usage.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/logging_configuration.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/logging_pytest_integration.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/modern_logging_best_practices.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/repository_uow_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/guides/testing-development.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/111.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/issues/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/issues/summary.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/issues/v1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/migration/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/migration-v3-to-v4/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/migration-v3-to-v4/v3-to-v4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/reports_2025/async_http_client_design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/skills/write-code.zip +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/skills/write-test.zip +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/user-guide/extensions.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/user-guide/ui-testing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/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.10.3 → df_test_framework-4.10.4}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/architecture.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/best-practices.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/config-integration-guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/optimization-report.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/v1/publishing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/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.10.3 → df_test_framework-4.10.4}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/ci-templates/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/ci-templates/github-actions.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/ci-templates/gitlab-ci.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/CAPABILITY_EXTRACTION_RULES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/RELEASE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/UNASYNC_EVALUATION.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/VERSION_CONTROL_RULES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/http-client-interface-plan.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/development/local-development.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/DECIMAL_GUIDE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/allure_plugin.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/assertions_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/async_api_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/auth_session_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/baseline_pool.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/beyond-framework.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/database_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/decorators_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/distributed_tracing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/extensions.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/factory_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/fixture_chain_pattern.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/fixtures_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/graphql_client.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/grpc_client.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/helpers_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/http_client_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/integration-guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/local_debug_quickstart.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/logging_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/message_queue.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/middleware_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/mocking.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/monitoring_plugin.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/naming_standard.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/national-crypto.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/openapi_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/plugin_hooks_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/plugins_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/project-structure-standard.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/prometheus_metrics.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/redis_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/resilience_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/scaffold_cli_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/service_client_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/storage.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/telemetry_guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/test_data.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/test_data_cleanup.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/test_data_pipeline_design.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/guides/web-ui-testing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.0.0-alpha.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.1.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.10.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.11.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.11.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.12.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.12.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.13.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.14.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.14.0_completion_report.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.14.0_implementation_complete.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.16.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.17.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.17.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.17.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.18.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.18.1-bugfix.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.18.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.19.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.2.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.20.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.21.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.22.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.22.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.23.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.24.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.25.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.26.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.27.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.28.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.28.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.29.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.3.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.30.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.31.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.32.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.33.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.34.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.34.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.5.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.6.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.35.7.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.36.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.36.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.37.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.10.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.5.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.7.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.8.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.38.9.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.39.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.39.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.4.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.40.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.41.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.41.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.42.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.43.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.44.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.45.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.46.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.46.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.46.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.5.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.6.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.6.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.6.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.7.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.8.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v3.9.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.0.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.0.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.0.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.0.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.0.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.1.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.1.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.1.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.10.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.10.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.10.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.10.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.2.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.2.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.2.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.3.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.3.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.4.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.4.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.4.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.4.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.4.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.5.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.6.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.6.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.7.5.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.8.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.8.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.0.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.1.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.10.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.11.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.12.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.13.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.14.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.15.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.16.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.17.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.18.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.19.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.2.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.20.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.21.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.22.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.23.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.3.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.4.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.5.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.6.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.7.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.8.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/releases/v4.9.9.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/troubleshooting/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/troubleshooting/common-errors.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/troubleshooting/debugging-guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/BEST_PRACTICES.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/QUICK_REFERENCE.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/QUICK_START.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/USER_MANUAL.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/ci-cd.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/code-generation.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/configuration.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/cross-project-sharing.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/debugging.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/examples.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/multi-repo.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/nested-settings-guide.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/user-guide/security-best-practices.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/01-basic/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/01-basic/database_operations.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/01-basic/http_client_usage.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/01-basic/redis_cache.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/01-basic/storage_usage.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/02-bootstrap/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/02-bootstrap/custom_providers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/02-bootstrap/custom_settings.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/02-bootstrap/with_extensions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/03-testing/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/03-testing/conftest.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/03-testing/test_api.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/03-testing/test_database.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/03-testing/test_with_fixtures.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/04-patterns/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/04-patterns/builder_pattern.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/04-patterns/combined_patterns.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/04-patterns/repository_pattern.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/allure_enhancement_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/custom_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/data_factory_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/environment_validator_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/monitoring_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/mq_monitor_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/05-extensions/notification_extension.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/06-ui-testing/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/06-ui-testing/basic_ui_test.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/06-ui-testing/conftest.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/06-ui-testing/page_object_example.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/kafka_basic.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/kafka_ssl.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/rabbitmq_basic.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/rabbitmq_topic.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/rocketmq-broker.conf +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-message-queue/rocketmq_basic.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-v35-features/02_profile_configuration.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-v35-features/03_runtime_overrides.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-v35-features/04_observability.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/07-v35-features/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/02_repository_v37.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/05_project_uow.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/08-v37-features/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/examples/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/bump_version.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/check_release.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/fetch_swagger.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/security-scan.bat +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/scripts/security-scan.sh +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/bootstrap/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/httpx/contract.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/databases/sql_builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/drivers/web/toolkit.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/__main__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/codegen_utils.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/cicd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/doctor_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/env.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/init_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/commands/interactive.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/generators/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/generators/case_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/main.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/README.md.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/config/base.yaml.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/config/env.test.example.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/config/test.local.yaml.example.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/config/test.yaml.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/editorconfig.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/gitattributes.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/gitignore.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/pyproject.toml.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/actions_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/apis_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/cases_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/clients_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/config_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/constants_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/example_actions.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/example_api.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/example_case.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/example_page.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/fixtures_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/http_clients.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/models_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/naming.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/pages_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/pkg_init.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/settings.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/src/ui_clients.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/tests/conftest.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/tests/example_cases.yaml.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/tests/test_example_api.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/tests/test_example_ui.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/scaffold/templates/tests/test_naming.py.j2 +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile.dockerignore +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/flow.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/page.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/test.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/cache.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/database.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/graphql.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/grpc.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/http.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/messaging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/storage.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/test_lifecycle.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/events/ui.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/exceptions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/middleware/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/middleware/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/middleware/chain.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/middleware/decorator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/middleware/protocol.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/models/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/models/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/event.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/repository.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/protocols/telemetry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/core/types.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/environment.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/schema.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/settings.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/config/sources.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/_aes.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/_common.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/_sm2.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/_sm3.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/crypto/_sm4.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/national_crypto.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/plugins/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/envelope.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/helper.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/matchers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/response.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/assertions/waiting.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/baseline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/builders/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/factories/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/factories/examples.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/loaders/base.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/naming/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/naming/guards.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/naming/keys.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/naming/registry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/naming/standard.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/_registry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/context.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/dataset.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/reporter.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/data/pipeline/resolver.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/debugging/console.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/decorators/ui_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/execution/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/execution/gates.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/auth.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/page_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/data_pipeline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/debug.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/env_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/plugins/markers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/src/df_test_framework/testing/reporting/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/README.md +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/test_bootstrap.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/test_df_providers_chain.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/test_plugin_middlewares.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/test_providers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/bootstrap/test_runtime.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/graphql/test_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/graphql/test_models.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/grpc/test_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/grpc/test_models.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/core/test_request.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/core/test_response.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/test_event_publisher.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/test_otel_tracing.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/middleware/test_retry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_contract.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_request_kwargs.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/clients/http/rest/test_running_loop_dependency.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_async_database.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_database.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_database_factory.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_dialect_compilation.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_query_builder.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_repositories.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/databases/test_uow.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/drivers/web/test_toolkit.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/messengers/test_kafka_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/storages/test_local_file.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/storages/test_oss.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/storages/test_s3.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/capabilities/test_dual_track_parity.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/apis/__init__.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/apis/ding_dan_guan_li_api.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/__init__.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/base.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/requests/__init__.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/requests/ding_dan_guan_li.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/responses/__init__.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/src/demo_proj/models/responses/ding_dan_guan_li.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/golden/openapi/tests/api/test_ding_dan_guan_li_api.py.txt +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_baseline_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_case_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_cleanup_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_doctor_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_env_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_gen_page_flow.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_generate_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_init_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_interactive_cmd.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_main.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_openapi_golden.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/cli/test_utils.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/conftest.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/golden/event_schema.json +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/protocols/test_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/protocols/test_event.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/protocols/test_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/protocols/test_repository.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/protocols/test_telemetry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_context.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_event_publisher_coverage.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_event_schema_contract.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_events.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_layer_dependencies.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_middleware.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/core/test_types.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/config/test_discovery.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/config/test_environment_layers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/config/test_loader.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/config/test_middleware_schema.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/context/test_carriers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/events/test_bus.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_observer.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_performance.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_registry.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/metrics/test_types.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/plugins/test_manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/telemetry/test_facade.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/telemetry/test_noop.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_bootstrap.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_crypto.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_crypto_aes.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_crypto_imports.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_crypto_interop.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_helpers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_logging.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_national_crypto_helpers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_pipeline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_runtime.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_settings.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/test_sources.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_context.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_decorators.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_exporters.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_integrations.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_interceptors.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/infrastructure/tracing/test_manager.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/integration/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/integration/test_config_environment.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/integration/test_event_observability.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/integration/test_factory_assertions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/integration/test_middleware_chain.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/migration/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/plugins/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_docs_imports.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_docs_links.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_json_to_model_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_lazy_imports.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_release_validation.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/test_version_consistency.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/assertions/test_json_schema.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/assertions/test_matchers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/assertions/test_waiting.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/pipeline/test_pipeline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/pipeline/test_pipeline_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_baseline.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_builders.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_data_generator.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_factories.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_naming.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_naming_guards.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_naming_keys.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/data/test_naming_standard.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/debugging/test_console_debug_observer.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/decorators/test_actions_class.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/decorators/test_api_class.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/decorators/test_ui_client.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_cleanup_scopes_integration.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_fixtures_core.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_lifecycle_hooks.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_plugin_lifecycle_integration.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/fixtures/test_ui_tracing.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/mocking/test_database_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/mocking/test_http_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/mocking/test_redis_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/mocking/test_time_mock.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/plugins/test_debug_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/plugins/test_env_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/plugins/test_logging_plugin.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/plugins/test_markers.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_allure_helper.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_assertions.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_data_loaders.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_factories_presets.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_gates_concurrency.py +0 -0
- {df_test_framework-4.10.3 → df_test_framework-4.10.4}/tests/testing/test_page_mock_auth_state.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.10.
|
|
12
|
-
- **更新时间**: 2026-11-
|
|
11
|
+
- **版本**: v4.10.4
|
|
12
|
+
- **更新时间**: 2026-11-06
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -116,7 +116,7 @@ df-test init my-project --type full # 完整项目:API + UI 两侧齐备
|
|
|
116
116
|
- **基准数据池**: `BaselinePool` + `baseline` fixture + `df-test baseline check|ensure`,共享环境受管数据的幂等保障与巡检拦截(v4.9.12)
|
|
117
117
|
- **闸门与竞态**: `@pytest.mark.requires_env/requires_flag` 统一环境/开关 skip;`race()` 栅栏对齐的竞态原语;`get_df_settings/env/runtime` 公开访问器;Allure environment.properties 自动填充(v4.9.15)
|
|
118
118
|
- **UI 健壮原语**: `toolkit` 模块 + AppActions 内置(antd/element 方言;仅用于页面不可控场景,语义化定位仍是第一选择)(v4.9.7)
|
|
119
|
-
- **可观测七层模型**: 能力层只埋一次语义观测点(框架事件),日志/Allure/指标为事件订阅者;EventBus 是纯路由器,组合根用 `create_default_event_bus()
|
|
119
|
+
- **可观测七层模型**: 能力层只埋一次语义观测点(框架事件),日志/Allure/指标为事件订阅者;EventBus 是纯路由器,组合根用 `create_default_event_bus(settings)`(输出策略属于该次运行,观测配置构造时绑定);`publish_sync` 异步上下文入队跟踪 + 每测试自动 `drain()`(v4.9.21)
|
|
120
120
|
- **DB 事务参与**: CRUD 全系支持 `session=` 参数参与 `transaction()`;SQL 标识符全面校验(表名/列名/条件键/order_by)防注入;`savepoint(session)` 真实部分回滚(v4.9.19~21)
|
|
121
121
|
- **MQ async 化**: `AsyncKafkaClient`/`AsyncRabbitMQClient`(专属单线程 executor 委托);Kafka 命名对齐 confluent 官方(`produce` 系 + `value` 参数);双侧 `connect()`/`stop()`/`fetch()`(v4.9.21)
|
|
122
122
|
- **机检体系**: 双轨对账、core 层依赖 AST 检查、文档死链/import 路径/版本一致性、事件 dataclass、golden 快照——规范尽量机检化(DESIGN_STANDARDS R0.1)
|
|
@@ -5,7 +5,84 @@
|
|
|
5
5
|
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
6
|
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [4.10.4] - 2026-11-06
|
|
9
|
+
|
|
10
|
+
> 含配置显式归属与 Runtime 组合契约的破坏性变化。维护者指定按 PATCH 发布,
|
|
11
|
+
> 消费项目统一维护并同步适配;详见 [v4.10.4 发布说明](docs/releases/v4.10.4.md)。
|
|
12
|
+
|
|
13
|
+
### 资源所有权、执行归属与输出隔离
|
|
14
|
+
|
|
15
|
+
- `with_scope` / `with_metadata` 为资源借用视图;`fresh()` 返回 self 的共享 Provider
|
|
16
|
+
由原注册表关闭。注册表关闭后拒绝获取资源,资源只执行一个关闭协议。
|
|
17
|
+
- session 异步 fixture 经 Provider 释放并清空缓存;CLI cleanup/baseline 统一经 Bootstrap
|
|
18
|
+
加载项目插件,finally 关闭资源。浏览器 fixture 补齐启动失败时的清理。
|
|
19
|
+
- 新增 `execution_scope(scope, phase=...)`,事件在产生时捕获现有 ExecutionContext;pytest
|
|
20
|
+
自动绑定用例和阶段,HTTP/MQ 线程桥接及 `race()` 的预热/目标调用复制上下文。Allure、调试器和失败记录器按用例订阅。
|
|
21
|
+
**行为变化**:session 客户端的事件现在有调用用例归属;脚本共享客户端用 execution_scope
|
|
22
|
+
显式绑定,with_scope 视图本身不激活执行上下文。
|
|
23
|
+
- 事件构造、发布与订阅故障不覆盖被测结果;HTTP/gRPC/GraphQL 证据准备失败不阻断请求。
|
|
24
|
+
脱敏失败丢弃原文,UI 输入保守遮盖;附件失败记录安全诊断,诊断出口故障回退 stderr。
|
|
25
|
+
|
|
26
|
+
### Runtime 组合场景修复
|
|
27
|
+
|
|
28
|
+
- `RuntimeContext.with_overrides()` 不再丢失插件注册的自定义 Provider:注册表经
|
|
29
|
+
`ProviderRegistry.fork()` 派生,保留定义、不共享已缓存实例。Provider 须实现 `fresh()`
|
|
30
|
+
声明派生方式(返回新 Provider 表示隔离、返回 self 表示明确共享);未实现的自定义 Provider
|
|
31
|
+
在派生时报 `TypeError`,不再默认共享可能按旧配置创建的实例。
|
|
32
|
+
- 新增可等待关闭入口 `RuntimeContext.aclose()` / `ProviderRegistry.ashutdown()` /
|
|
33
|
+
`SingletonProvider.ashutdown()`;此前事件循环内关闭只调度任务即返回,异步资源可能未关闭
|
|
34
|
+
或被取消。同步 `close()` 在循环内误用时告警并由 Provider 记录调度出的关闭任务,随后的
|
|
35
|
+
`aclose()` 会等待这些任务完成;单个资源关闭失败不再中断其余资源释放。
|
|
36
|
+
|
|
37
|
+
### 配置显式归属(含破坏性变更)
|
|
38
|
+
|
|
39
|
+
- **修复 pytest 指定环境时内部读取点读错环境**:`--env`、`--config-dir`、`--local` 此前只作用于
|
|
40
|
+
`runtime.settings`,脱敏、可观测/Allure/调试/指标开关、`keep_test_data` 判定、RabbitMQ/Kafka
|
|
41
|
+
fixture 连接配置仍按 `ENV`(缺省 `test`)加载另一套配置。现在全部使用本次会话配置。
|
|
42
|
+
**行为变化**:在非默认环境运行的项目,上述各项改按指定环境生效。
|
|
43
|
+
- 配置与策略改为构造/装配时显式确定,删除全局查找与回退:
|
|
44
|
+
- 脱敏:删除 `get_sanitize_service` / `set_sanitize_service` / `clear_sanitize_service`,
|
|
45
|
+
新增 `resolve_sanitizer` / `sanitizer_for` / `default_sanitizer`;HTTP/gRPC/GraphQL 客户端与
|
|
46
|
+
事件中间件、gRPC 追踪中间件、失败现场记录器、AllureObserver 新增 `sanitizer` 参数。
|
|
47
|
+
传入 `runtime` 的客户端使用其 `settings.sanitize`;裸构造使用纯默认 `SanitizeConfig()`,
|
|
48
|
+
不读取环境变量;`settings.sanitize` 类型非法时报错。
|
|
49
|
+
- 观测开关:删除 `is_observability_enabled` / `set_observability_enabled`、
|
|
50
|
+
`get_observability_logger` / `http_logger` 等日志器缓存、Allure 的 `is_allure_enabled`;
|
|
51
|
+
`ObservabilityLogger` / `ObservabilityLogObserver` 新增 `enabled` / `sanitizer` 构造参数;
|
|
52
|
+
是否记录 Allure 由 fixture 按会话配置决定是否创建 observer。
|
|
53
|
+
- `create_default_event_bus(settings)` 改为必需参数,按 `observability.enabled` 决定是否挂日志观察者。
|
|
54
|
+
- 删除 DB/Redis 无事件总线时的日志回退直投(`get_fallback_observer`):观测由显式装配决定。
|
|
55
|
+
- `rabbitmq_config` / `kafka_config` fixture 改为依赖 `settings` fixture。
|
|
56
|
+
- `Bootstrap.run()` 默认按本次配置创建事件总线并注入 Runtime(新增 `with_event_bus()` 覆盖),
|
|
57
|
+
pytest 会话复用这条总线;**不再隐式配置进程级日志**,需要时显式 `with_logging(...)`。
|
|
58
|
+
- `configure_logging(config, sanitize=None)`:进程级日志管道的脱敏在配置时绑定,重新配置对早期
|
|
59
|
+
已缓存的 logger 同样生效(pytest 两阶段初始化下,早期 logger 此前会一直沿用默认脱敏规则)。
|
|
60
|
+
- `RuntimeContext.with_overrides()` 覆盖 `observability.*` 时报 `ValueError`:派生 Runtime 共享事件
|
|
61
|
+
总线,输出策略属于总线(行为契约调整,此前该覆盖静默不生效)。
|
|
62
|
+
- 新增 `SanitizeService.sanitize_url()`:HTTP、GraphQL 事件中 URL 查询串里的凭据与 `params` 同样遮盖。
|
|
63
|
+
|
|
64
|
+
### 清理与依赖解析
|
|
65
|
+
|
|
66
|
+
- `SimpleCleanupManager` 的 `add_api_data` / `add_db_row` / `add_redis_key` 按登记时的
|
|
67
|
+
客户端/数据库执行清理;此前多客户端场景下清理请求全部交给最后登记(Redis、HTTP)或
|
|
68
|
+
最先登记(DB)的资源,可能清错对象。DB 行清理的表名与条件列名补做标识符校验。
|
|
69
|
+
- `@service_client` / `@api_class` / `@actions_class` 依赖解析只在被请求的 fixture 本身不存在时
|
|
70
|
+
回退为字面字符串;fixture 初始化失败或其内部依赖缺失时原样抛出(此前 `@service_client`
|
|
71
|
+
会吞掉初始化异常并把 fixture 名当字符串注入)。
|
|
72
|
+
|
|
73
|
+
### 可观测
|
|
74
|
+
|
|
75
|
+
- EventBus 处理器为无 `__name__` 的可调用对象时,其异常不再在日志环节二次抛出、穿透到发布方。
|
|
76
|
+
- `metrics_observer` 拿不到 `test_runtime` 时的兜底分支改用 `get_global_event_bus()`
|
|
77
|
+
(此前导入不存在的 `get_event_bus`)。
|
|
78
|
+
- `TracingInterceptor` 新增 `sensitive_headers` 参数并提供默认凭据头集合;此前开启
|
|
79
|
+
`record_headers=True` 即因属性未定义抛 `AttributeError`。
|
|
80
|
+
|
|
81
|
+
### 独立安装依赖
|
|
82
|
+
|
|
83
|
+
- 核心依赖改为 `sqlalchemy[asyncio]`,保证 Bootstrap 导入异步数据库能力所需的
|
|
84
|
+
`greenlet` 随正式包安装;此前仅在开发或异步数据库 extra 中补齐,新版 SQLAlchemy
|
|
85
|
+
的干净安装会在导入 Bootstrap 时失败。独立 wheel 冒烟增加组合根导入检查。
|
|
9
86
|
|
|
10
87
|
## [4.10.3] - 2026-11-04
|
|
11
88
|
|
|
@@ -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.10.
|
|
12
|
-
- **更新时间**: 2026-11-
|
|
11
|
+
- **版本**: v4.10.4
|
|
12
|
+
- **更新时间**: 2026-11-06
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -119,7 +119,7 @@ df-test init my-project --type full # 完整项目:API + UI 两侧齐备
|
|
|
119
119
|
- **基准数据池**: `BaselinePool` + `baseline` fixture + `df-test baseline check|ensure`,共享环境受管数据的幂等保障与巡检拦截(v4.9.12)
|
|
120
120
|
- **闸门与竞态**: `@pytest.mark.requires_env/requires_flag` 统一环境/开关 skip;`race()` 栅栏对齐的竞态原语;`get_df_settings/env/runtime` 公开访问器;Allure environment.properties 自动填充(v4.9.15)
|
|
121
121
|
- **UI 健壮原语**: `toolkit` 模块 + AppActions 内置(click_button/set_text_input 等,antd/element 方言;仅用于页面不可控场景,语义化定位仍是第一选择)(v4.9.7)
|
|
122
|
-
- **可观测七层模型**: 能力层只埋一次语义观测点(框架事件),日志/Allure/指标为事件订阅者;EventBus 是纯路由器,组合根用 `create_default_event_bus()
|
|
122
|
+
- **可观测七层模型**: 能力层只埋一次语义观测点(框架事件),日志/Allure/指标为事件订阅者;EventBus 是纯路由器,组合根用 `create_default_event_bus(settings)`(输出策略属于该次运行,观测配置构造时绑定);`publish_sync` 异步上下文入队跟踪 + 每测试自动 `drain()`(v4.9.21)
|
|
123
123
|
- **DB 事务参与**: CRUD 全系支持 `session=` 参数参与 `transaction()`;SQL 标识符全面校验(表名/列名/条件键/order_by)防注入;`savepoint(session)` 真实部分回滚(v4.9.19~21)
|
|
124
124
|
- **MQ async 化**: `AsyncKafkaClient`/`AsyncRabbitMQClient`(专属单线程 executor 委托);Kafka 命名对齐 confluent 官方(`produce` 系 + `value` 参数);双侧 `connect()`/`stop()`/`fetch()`(v4.9.21)
|
|
125
125
|
- **机检体系**: 双轨对账、core 层依赖 AST 检查、文档死链/import 路径/版本一致性、事件 dataclass、golden 快照——规范尽量机检化(DESIGN_STANDARDS R0.1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: df-test-framework
|
|
3
|
-
Version: 4.10.
|
|
3
|
+
Version: 4.10.4
|
|
4
4
|
Summary: 基于交互模式的现代化测试自动化框架,支持多种测试场景
|
|
5
5
|
Author-email: DF QA Team <qa@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -44,7 +44,7 @@ Requires-Dist: pyyaml>=6.0.0
|
|
|
44
44
|
Requires-Dist: questionary>=2.0.0
|
|
45
45
|
Requires-Dist: redis>=5.0.0
|
|
46
46
|
Requires-Dist: requests>=2.34.2
|
|
47
|
-
Requires-Dist: sqlalchemy>=2.0.0
|
|
47
|
+
Requires-Dist: sqlalchemy[asyncio]>=2.0.0
|
|
48
48
|
Requires-Dist: structlog>=25.4.0
|
|
49
49
|
Requires-Dist: urllib3>=2.7.0
|
|
50
50
|
Provides-Extra: all
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# DF Test Framework
|
|
2
2
|
|
|
3
|
-
> **版本**: v4.10.
|
|
4
|
-
> **更新时间**: 2026-11-
|
|
3
|
+
> **版本**: v4.10.4
|
|
4
|
+
> **更新时间**: 2026-11-06
|
|
5
5
|
> 简单、强大、可扩展的现代化 Python 测试自动化框架
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/df-test-framework/)
|
|
@@ -49,6 +49,9 @@
|
|
|
49
49
|
- **R3.4 (MUST)** 持有连接/进程/文件句柄的对象,其 fixture 必须 yield + 显式
|
|
50
50
|
close/await close;框架代管仅限框架自有类型,第三方对象生命周期不代管
|
|
51
51
|
(教训:AsyncHttpClient fixture 泄漏,v4.9.21)。
|
|
52
|
+
所有权必须显式:Runtime 视图与借用 Provider 不关闭原所有者资源;异步 fixture
|
|
53
|
+
释放资源时同时清空 Provider 缓存,避免归还已关闭实例。CLI 使用 Bootstrap 装配
|
|
54
|
+
并在 finally 关闭(优先四项修复,Unreleased)。
|
|
52
55
|
- **R3.5 (MUST)** 跨库/跨驱动语义差异必须在 docstring 标注(如 lastrowid 对
|
|
53
56
|
PostgreSQL 无效)。
|
|
54
57
|
- **R3.6 (SHOULD)** 上下文管理器承诺的语义必须真实成立并有集成测试锚定
|
|
@@ -165,9 +168,16 @@
|
|
|
165
168
|
(现状欠账:UI 细分事件无发布方,见 roadmap 候选①)。
|
|
166
169
|
- **R8.4 (MUST)** 脱敏在事件发布边界(EventPublisher/SanitizeService)完成一次,
|
|
167
170
|
订阅者不重复脱敏。
|
|
168
|
-
- **R8.5 (MUST)**
|
|
171
|
+
- **R8.5 (MUST)** 可选证据的准备、构造、发布与报告输出失败,不得替换业务返回值、
|
|
172
|
+
异常或断言;隔离边界不得包含被测操作。诊断仅含组件与异常类型,脱敏失败必须
|
|
173
|
+
丢弃或保守遮盖原文,禁止原文降级。诊断出口自身故障也须隔离
|
|
174
|
+
(优先四项修复,Unreleased;机检:`test_output_isolation.py`)。
|
|
169
175
|
- **R8.6 (SHOULD)** 关联标识用 correlation_id(短形态展示),不引入平行的
|
|
170
176
|
实例内计数器。
|
|
177
|
+
- **R8.7 (MUST)** 共享客户端按操作发生时的 ExecutionContext 关联 scope/phase,
|
|
178
|
+
不把创建时的 Runtime scope 当作当前用例;框架提交 executor 时复制上下文。
|
|
179
|
+
pytest 归属覆盖 setup/call/teardown,按用例订阅在整个 protocol 结束后清理
|
|
180
|
+
(优先四项修复,Unreleased;机检:`test_execution_scope.py`)。
|
|
171
181
|
|
|
172
182
|
## 9. sync/async 双轨
|
|
173
183
|
|
|
@@ -233,7 +243,7 @@
|
|
|
233
243
|
|
|
234
244
|
1. ✅ **EventBus 职责越界**(已清偿):`EventBus()` 默认自行挂载日志观察者——通用事件路由器
|
|
235
245
|
与默认输出策略绑死;挂载决策应上移到组合根(Bootstrap / pytest 插件层)。
|
|
236
|
-
**落地约束**:上移必须配防退化机制(`create_default_event_bus()` 工厂 +
|
|
246
|
+
**落地约束**:上移必须配防退化机制(`create_default_event_bus(settings)` 工厂 +
|
|
237
247
|
机检断言 Bootstrap 产出的 bus 挂有观察者),否则"忘挂载=实时日志静默丢失"
|
|
238
248
|
只是把漏埋点风险从能力层挪到组合根。
|
|
239
249
|
2. ✅ **`publish_sync()` 名不副实**(已清偿:语义澄清 + _pending_tasks 跟踪 + drain() + 每测试 autouse 自动 drain):已有事件循环时走 `create_task()` 立即返回,
|
{df_test_framework-4.10.3 → df_test_framework-4.10.4}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md
RENAMED
|
@@ -82,7 +82,7 @@ logging/markers/allure/debugging/metrics/monitoring/ui 各自初始化
|
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
RuntimeContext 创建即完成组合根装配:EventBus 由
|
|
85
|
-
`create_default_event_bus()` 工厂创建(挂 ObservabilityLogObserver),
|
|
85
|
+
`create_default_event_bus(settings)` 工厂创建(挂 ObservabilityLogObserver),
|
|
86
86
|
tracing 启用时 Bootstrap 显式注册 trace context 提供者(core 依赖反转)。
|
|
87
87
|
|
|
88
88
|
`config` 对象此后携带:`_df_settings` / `_df_current_env` / `_df_runtime` /
|
|
@@ -115,7 +115,7 @@ Session 级(首条测试时创建,整个会话复用)
|
|
|
115
115
|
└─ settings
|
|
116
116
|
|
|
117
117
|
Function 级(每条测试独立)
|
|
118
|
-
test 隔离 EventBus ── _df_test_buses[nodeid],create_default_event_bus()
|
|
118
|
+
test 隔离 EventBus ── _df_test_buses[nodeid],create_default_event_bus(settings)
|
|
119
119
|
├─ _auto_allure_observer (autouse) AllureObserver 订阅全部事件
|
|
120
120
|
├─ _auto_debug_by_marker (autouse) 有 @debug/配置开关时挂 Console 观察者
|
|
121
121
|
├─ 事件 drain fixture (autouse) teardown 时 await bus.drain()
|
|
@@ -189,7 +189,7 @@ UI 取证据此决定 trace 去留。
|
|
|
189
189
|
pytest_sessionfinish df_session_finish hook;Allure 结果已由 allure-pytest 落盘
|
|
190
190
|
pytest_unconfigure (与 configure 相反顺序)
|
|
191
191
|
└─ RuntimeContext.close()
|
|
192
|
-
├─ Provider
|
|
192
|
+
├─ Provider shutdown(含 df_providers 注册的项目 Provider)
|
|
193
193
|
├─ http_client / database / redis 连接释放
|
|
194
194
|
└─ 残留测试 EventBus 清理
|
|
195
195
|
```
|
|
@@ -217,9 +217,9 @@ pytest_unconfigure (与 configure 相反顺序)
|
|
|
217
217
|
|
|
218
218
|
### 测试隔离 EventBus
|
|
219
219
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
220
|
+
当前主路径共享会话总线,按操作时的执行 scope 过滤订阅;`test_runtime` 是资源借用视图。
|
|
221
|
+
pytest protocol 与阶段 hook 绑定 nodeid 和 setup/call/teardown,线程委托复制上下文。
|
|
222
|
+
显式隔离总线仍可用 `create_default_event_bus(settings)` 创建。
|
|
223
223
|
|
|
224
224
|
### 观测的"自动"边界
|
|
225
225
|
|
|
@@ -237,3 +237,11 @@ Allure 记录、失败取证、脱敏、事件隔离、drain 全部自动——
|
|
|
237
237
|
- [事件总线指南](../guides/event_bus_guide.md)
|
|
238
238
|
- [数据清理](../guides/test_data_cleanup.md)
|
|
239
239
|
- [配置指南](../guides/config_guide.md)
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
### 资源与可选证据的关闭边界
|
|
243
|
+
|
|
244
|
+
session 异步 fixture 在所属循环退出前通过 Provider 释放并清空缓存;unconfigure 关闭
|
|
245
|
+
其余 Runtime 自有资源。借用视图和声明共享的派生 Provider 不拥有最终关闭权。
|
|
246
|
+
输出异常由观测边界隔离并记录安全诊断,不替换业务返回值或原始断言。
|
|
247
|
+
具体契约与回归入口见 [四项实施记录](../development/priority-four-completion.md)。
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# 框架能力评估:理想能力模型与现状对照
|
|
2
|
+
|
|
3
|
+
> **状态**:讨论记录 / 非规范
|
|
4
|
+
>
|
|
5
|
+
> 记录 2026-11-05 的一轮框架评估:先抛开现有实现独立推导"测试框架应具备的能力与设计原则",
|
|
6
|
+
> 再逐项对照真实实现,最后经 Codex 评审修正、收敛为推进方向。本文不直接约束实现,也不替代
|
|
7
|
+
> [DESIGN_STANDARDS](./DESIGN_STANDARDS.md);落地事项以 `docs/development/` 下的问题说明与方案为准。
|
|
8
|
+
>
|
|
9
|
+
> 对照基线:v4.10.3 + 当日 Unreleased 修复(`d93b3e3`)。后续状态更新见第 5 节。
|
|
10
|
+
|
|
11
|
+
## 1. 测试框架的定位
|
|
12
|
+
|
|
13
|
+
一次测试是**对系统的某个预期给出可信结论**。运行器(pytest)负责发现、调度与汇总;协议库
|
|
14
|
+
(httpx、Playwright、SQL 驱动)负责与系统对话;测试框架处理两者都不管、但每个测试团队都会
|
|
15
|
+
反复遇到的问题。衡量标准只有两个:
|
|
16
|
+
|
|
17
|
+
1. 写出一个可信测试的成本有多低;
|
|
18
|
+
2. 测试失败后弄清原因的成本有多低。
|
|
19
|
+
|
|
20
|
+
每个新增概念都要为这两点服务,否则就是负担。
|
|
21
|
+
|
|
22
|
+
## 2. 理想能力模型
|
|
23
|
+
|
|
24
|
+
### 2.1 要解决的问题
|
|
25
|
+
|
|
26
|
+
| # | 问题 | 不解决的后果 |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| 1 | 结论不可信:假通过、偶发失败、异步结果判早了 | 团队不再相信红灯 |
|
|
29
|
+
| 2 | 环境与安全:用例跑在不同环境;破坏性操作误伤共享/生产环境 | 配置散落或事故 |
|
|
30
|
+
| 3 | 状态与隔离:互相踩数据、残留累积 | 偶发失败、环境污染 |
|
|
31
|
+
| 4 | 身份与访问:多角色、多系统、多种认证 | 每个用例自己拼登录 |
|
|
32
|
+
| 5 | 依赖不可控:下游不稳或无测试环境 | 被测系统没问题测试先挂 |
|
|
33
|
+
| 6 | 失败难诊断:只有一行断言错误 | 靠重跑和猜 |
|
|
34
|
+
| 7 | 维护成本:被测系统一改,几百个用例跟着改 | 测试比业务代码难维护 |
|
|
35
|
+
| 8 | 反馈太慢:全量太久、不知道该跑哪些 | 测试被移出主流程 |
|
|
36
|
+
| 9 | 不稳定没人管:偶发失败被重试掩盖 | 可信度悄悄下降 |
|
|
37
|
+
| 10 | 结果难被机器消费 | 无法自动处理失败 |
|
|
38
|
+
|
|
39
|
+
1、3、6 决定框架有无价值;2、4、7 是基础要求;5、8、9、10 按团队规模和成熟度逐步提供。
|
|
40
|
+
|
|
41
|
+
### 2.2 能力分档
|
|
42
|
+
|
|
43
|
+
**核心(没有就不该叫测试框架)**
|
|
44
|
+
|
|
45
|
+
- **判定**:区分失败 / 错误 / 跳过 / 预期失败,未完成验证不得算通过;等待分"立即成立 / 最终成立 /
|
|
46
|
+
持续成立"三种语义(持续成立只证明采样点);失败输出预期、实际与差异,最终成立类带最后一次观察;
|
|
47
|
+
轮询默认只重复观察,重复动作须显式声明。
|
|
48
|
+
- **测试数据生命周期**:归属可追溯到运行与用例;登记时绑定"由谁、如何撤销",结果被记录,允许保留现场;
|
|
49
|
+
按归属认领崩溃残留(受环境安全等级约束);前置状态可幂等补齐或只检查;随机数据可复现。
|
|
50
|
+
- **证据**:每次交互结构化记录、按用例/步骤归属、入库前统一脱敏;附件存引用;测试结果是事实源,
|
|
51
|
+
报告与遥测是派生输出,派生失败不改变结论。
|
|
52
|
+
- **环境**:一次加载、类型化;带安全等级,破坏性能力由框架统一拦截;密钥不进证据。
|
|
53
|
+
|
|
54
|
+
**基础**
|
|
55
|
+
|
|
56
|
+
- **交互**:每种协议独立可用的客户端,保留协议语义(重放安全、事务、消息确认、浏览器会话);
|
|
57
|
+
认证、签名、业务成功判定作为策略;重试由协议声明安全条件,只共享退避算法。
|
|
58
|
+
- **身份**:身份(代表谁)、认证策略(如何获得授权)、会话(令牌/Cookie/浏览器状态)三者分离,
|
|
59
|
+
会话按"服务 + 身份 + 租户/范围"区分。
|
|
60
|
+
- **组织与复用**:推荐分层(用例 → Flow → API/页面对象 → 客户端)但不强制;数据驱动,参数化有可读身份。
|
|
61
|
+
|
|
62
|
+
**进阶(按需)**
|
|
63
|
+
|
|
64
|
+
依赖替身(含替身与真实服务一致性校验)、并行隔离与用例选择、稳定性治理(重试结果如实记录、
|
|
65
|
+
偶发统计、隔离区)、机器可消费结果(错误码、修复建议、能力清单)、工程化工具(脚手架、
|
|
66
|
+
规格驱动生成、体检、清扫)。
|
|
67
|
+
|
|
68
|
+
**明确不做**:重新实现运行器 / 依赖注入容器 / 插件系统 / 协议库;业务流程与对账算法;
|
|
69
|
+
承诺所有操作可撤销;用通用 `execute(kind, ...)` 抹平协议差异。
|
|
70
|
+
|
|
71
|
+
### 2.3 设计原则
|
|
72
|
+
|
|
73
|
+
1. 薄在标准工具之上,每一层都保留直接使用底层工具的出口。
|
|
74
|
+
2. 显式胜过魔法:依赖靠传入,不靠全局状态;自动装配只作可选便利。
|
|
75
|
+
3. 一个资源只有一个所有者:谁创建谁关闭,借用方不关,所有权转移显式表达。
|
|
76
|
+
4. 故障隔离:报告、日志、指标出错不影响被测操作与结论。
|
|
77
|
+
5. 结论如实:清理失败、证据缺失、重试通过与断言结论分开保留。
|
|
78
|
+
6. 概念少、语义精:普通使用者只需理解环境、客户端、数据、断言。
|
|
79
|
+
|
|
80
|
+
## 3. 现状对照
|
|
81
|
+
|
|
82
|
+
结论类别:✅ 已做到 ⚠️ 部分 / 有缺口 ❌ 缺失。依据为对照当日的代码核实。
|
|
83
|
+
|
|
84
|
+
### 3.1 核心能力
|
|
85
|
+
|
|
86
|
+
| 能力 | 结论 | 依据 |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| 判定:四种结论 | ✅ | pytest 原生 + YAML 用例 `xfail {reason, strict}` |
|
|
89
|
+
| 判定:业务成功 | ✅ | `http.response_contract` 配置驱动,`BaseAPI` 自动生效;`expect_business_error` |
|
|
90
|
+
| 判定:等待语义 | ✅ | `wait_until` 超时带最后值;`assert_consistently` 观察全窗口并注明只证明采样点 |
|
|
91
|
+
| 判定:轮询不重复副作用 | ⚠️ | 靠约定,框架不区分观察与动作 |
|
|
92
|
+
| 数据:归属 | ✅ | NamingRegistry、命名规范、KeyPatternRegistry |
|
|
93
|
+
| 数据:清理/补偿 | ⚠️ | 多客户端归属已于 `c119140` 修复;三个清理管理器;清理结果不进报告(BACKLOG 暂缓) |
|
|
94
|
+
| 数据:兜底清扫 | ✅ | `df-test cleanup`,默认 dry-run,拒绝 prod |
|
|
95
|
+
| 数据:前置状态 | ✅ | BaselinePool、`df-test baseline check/ensure` |
|
|
96
|
+
| 数据:可复现 | ⚠️ | 数据管线支持 `seed` / `--seed`;数据生成器是否共用种子未核实 |
|
|
97
|
+
| 证据:交互记录 | ✅ | HTTP/DB/Redis/MQ/UI 事件;失败注入 HTTP 现场;UI trace.zip 与截图 |
|
|
98
|
+
| 证据:统一脱敏 | ⚠️ | 对照时脱敏读全局配置、URL 查询串未脱敏(已修复,见第 5 节) |
|
|
99
|
+
| 证据:结果是事实源 | ⚠️ | 已有事件 schema、附件和运行器结果;缺断言、清理、证据完整性、重试尝试之间稳定可查询的关联与独立状态 |
|
|
100
|
+
| 证据:输出故障隔离 | ⚠️ | EventBus 订阅者异常已隔离;脱敏失败会打断请求,缺整体验证(优先落实第 4 项) |
|
|
101
|
+
| 环境:类型化描述 | ✅ | Pydantic 配置、分层 YAML、显式本机覆盖、环境身份 |
|
|
102
|
+
| 环境:安全等级统一拦截 | ⚠️ | `_PROTECTED_ENVS` 在 cleanup / baseline 各写一份,无框架统一执行点 |
|
|
103
|
+
| 环境:密钥不进证据 | ✅ | `SecretStr` + 脱敏(缺口同统一脱敏一项) |
|
|
104
|
+
|
|
105
|
+
### 3.2 基础能力
|
|
106
|
+
|
|
107
|
+
| 能力 | 结论 | 依据 |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| 交互:独立客户端 | ✅ | HTTP/gRPC/GraphQL/DB/Redis/Kafka/RabbitMQ/存储/浏览器,双轨 |
|
|
110
|
+
| 交互:协议语义 | ✅ | 事务与 savepoint、MQ 专属执行器、SQL 方言编译 |
|
|
111
|
+
| 交互:认证/签名策略 | ✅ | 中间件体系、国密签名 |
|
|
112
|
+
| 交互:重试安全条件 | ⚠️ | v4.10.3 统一重试并支持单请求 `retries=0`;"可安全重放"仍由使用者判断 |
|
|
113
|
+
| 身份:三者分离 | ⚠️ | 无统一身份概念;多角色靠 `with_overrides`,验证码登录由项目自建 Provider,UI 有 `auth_state` |
|
|
114
|
+
| 组织与复用 | ✅ | 推荐分层已有;装饰器与加载函数的学习成本见 3.4 |
|
|
115
|
+
| 数据驱动 | ✅ | `CaseContext[T]`、`case_dataset`,按阶段/标签筛选 |
|
|
116
|
+
|
|
117
|
+
### 3.3 进阶能力
|
|
118
|
+
|
|
119
|
+
| 能力 | 结论 | 依据 |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| 依赖替身 | ⚠️ | HTTP/页面/DB/Redis/时间 Mock,页面 Mock 支持轮换与延迟;无录制回放与替身一致性校验 |
|
|
122
|
+
| 并行隔离 | ⚠️ | 已有局部保护:认证缓存跨 worker 文件锁与原子写(`testing/fixtures/auth.py`)、命名随机唯一标识(`fresh_uid`);未形成覆盖数据、会话、资源、清理的整体验证 |
|
|
123
|
+
| 用例选择 | ⚠️ | 标签、环境闸门、数据管线筛选;无按影响面选择 |
|
|
124
|
+
| 稳定性治理 | ❌ | 仅 `retry_times` 配置依赖 pytest-rerunfailures;无偶发统计与隔离区 |
|
|
125
|
+
| 机器可消费 | ❌ | 无结构化结果输出、错误码与能力清单;事件 schema 稳定化是开端 |
|
|
126
|
+
| 工程化 | ✅ | Jinja2 脚手架、OpenAPI 生成、doctor、cleanup、baseline、CI 模板 |
|
|
127
|
+
|
|
128
|
+
### 3.4 设计原则对照
|
|
129
|
+
|
|
130
|
+
| 原则 | 结论 | 说明 |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| 薄在标准工具之上 | ⚠️ | 能力层基本做到;组合层的 Runtime/Provider 与 fixture 存在生命周期责任重叠 |
|
|
133
|
+
| 显式胜过魔法 | ⚠️ | 装饰器自动生成 fixture;对照时存在全局配置读取与全局脱敏(后者已修复) |
|
|
134
|
+
| 资源唯一所有者 | ⚠️ | Runtime、Provider、fixture 都可能关闭同一资源;本轮组合缺陷多出于此 |
|
|
135
|
+
| 故障隔离 | ⚠️ | 设计意图明确,缺整体验证 |
|
|
136
|
+
| 结论如实 | ⚠️ | 断言与清理结果不分层;重试通过记为通过 |
|
|
137
|
+
| 概念少、语义精 | ⚠️ | 需按学习成本评估,见下 |
|
|
138
|
+
|
|
139
|
+
**使用面的衡量方式**:导出数量(227)、fixture 数量(106)只能提示需要整理,不能直接证明概念过多;
|
|
140
|
+
装饰器与对应加载函数也不能相加计为"9 种声明方式"。应以学习和使用成本衡量:普通使用者完成一件事
|
|
141
|
+
是否有清楚的推荐路径;相近接口的差异能否解释清楚;文档、生成器与项目是否使用同一套写法;
|
|
142
|
+
高级能力是否妨碍理解基础用法。
|
|
143
|
+
|
|
144
|
+
## 4. 结论与推进方向
|
|
145
|
+
|
|
146
|
+
**总体判断**:保留现有能力,不整体重写。框架的主要资产已经成立——响应契约、等待语义、数据管线、
|
|
147
|
+
命名与清理、环境配置、协议能力、失败取证、脚手架与机检;它们让项目复用的不只是代码,还有经过
|
|
148
|
+
验证的工程规则。负担与缺口集中在组合与生命周期、结果表达和使用体验。
|
|
149
|
+
|
|
150
|
+
评审中对初版结论的修正(均已采纳):
|
|
151
|
+
|
|
152
|
+
- **组合层**:不预设"重做组合层"或删除哪些类。Runtime、Provider、fixture 并存本身不等于冲突,
|
|
153
|
+
也可能分别承担环境组合、资源构造、作用域管理;先统一资源所有权、配置来源和上下文传播,
|
|
154
|
+
对无法清楚表达这些契约的部分再重构。
|
|
155
|
+
- **结果模型**:目标是补齐结果契约(断言、清理、证据完整性、重试尝试的关联与独立状态),
|
|
156
|
+
先验证扩展现有链路是否足够,再决定是否新建模型。
|
|
157
|
+
- **身份**:身份、认证、会话的边界值得明确,统一 Actor API 是否必要取决于能减少多少真实重复,
|
|
158
|
+
作为专项设计,不与资源正确性修复绑定。
|
|
159
|
+
- **并行隔离**:由"完全缺失"修正为"有局部保护、未整体验证",先补场景验证再设计机制。
|
|
160
|
+
- **使用面**:按学习与使用成本衡量,不按数量。
|
|
161
|
+
|
|
162
|
+
### 推进层次
|
|
163
|
+
|
|
164
|
+
| 层次 | 内容 |
|
|
165
|
+
|---|---|
|
|
166
|
+
| 优先落实 | 资源所有权、配置与脱敏一致性、执行上下文传播、输出故障隔离的组合验证 |
|
|
167
|
+
| 按实际缺口补强 | 结果契约、身份与会话管理、并行隔离、重试结果保留 |
|
|
168
|
+
| 持续改善 | 推荐使用路径、命名一致性、文档与脚手架、重复实现整理 |
|
|
169
|
+
|
|
170
|
+
此前暂缓的事项(对账原语、执行记录、清理结果可见、MaxCompute 上收等,见 [BACKLOG](../development/BACKLOG.md))
|
|
171
|
+
维持原结论,不因本次评估重新列为必做项。每项落地前先写清"当前具体问题、目标行为、验收场景",
|
|
172
|
+
再选择最小完整改动。
|
|
173
|
+
|
|
174
|
+
## 5. 状态(持续更新)
|
|
175
|
+
|
|
176
|
+
| 事项 | 状态 | 文档 |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| 优先落实四项问题说明 | 已整理 | [priority-issues-2026-11](../development/priority-issues-2026-11.md) |
|
|
179
|
+
| 第 2 项 配置与脱敏一致性 | **已实施**(v4.10.4,`e840379` / `baaccc4`) | [config-ownership-plan](../development/config-ownership-plan.md) |
|
|
180
|
+
| 第 1 项 资源所有权 | 已实施并通过离线验收(v4.10.4) | [实施与验收](../development/priority-four-completion.md) |
|
|
181
|
+
| 第 3 项 执行上下文传播 | 已实施并通过离线验收,含 race 线程传播补漏(v4.10.4) | [实施与验收](../development/priority-four-completion.md) |
|
|
182
|
+
| 第 4 项 输出故障隔离 | 已实施并通过离线验收(v4.10.4) | [实施与验收](../development/priority-four-completion.md) |
|
|
183
|
+
|
|
184
|
+
## 6. 讨论过但未作为目标的方向
|
|
185
|
+
|
|
186
|
+
同日讨论中还出现过若干更彻底的重设计方向。它们不是当前目标,记录取舍以免重复讨论;
|
|
187
|
+
若要启用,须先做对应验证。
|
|
188
|
+
|
|
189
|
+
| 方向 | 价值 | 主要顾虑 / 需验证 |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| 统一 Scope 栈管理资源与数据撤销 | 生命周期一种机制 | 资源释放与数据补偿语义不同(数据可能需保留、只能补偿、需记录结果),可共享调度但不能视为同一件事;执行嵌套不等于资源所有权 |
|
|
192
|
+
| Runtime 环境化、资源全部交给 fixture | 消除双重生命周期 | 框架 CLI(cleanup / baseline)与 FSC 双库 fixture 等非 pytest 入口也需复用构造与关闭规则 |
|
|
193
|
+
| OTel 作为唯一证据底座 | 调用关联与跨系统追踪 | 有采样、队列满可丢 span,缺测试结论 / 阶段 / 重跑语义;应保留自有结果契约再与 OTel 关联 |
|
|
194
|
+
| 单一异步实现 + 同步 portal 桥接 | 消除双轨重复 | 线程边界、事件循环归属、取消传播;Playwright 同步 API 基于 greenlet 而非线程 portal;需 spike 验证 |
|
|
195
|
+
| 服务声明式配置统一 5 类装饰器 | 降低概念数 | 证据不足;不同装饰器可能对应不同职责,可先统一注册机制 |
|
|
196
|
+
|
|
197
|
+
## 相关文档
|
|
198
|
+
|
|
199
|
+
- [定位梳理记录](./framework-positioning-notes.md)
|
|
200
|
+
- [DESIGN_STANDARDS](./DESIGN_STANDARDS.md)
|
|
201
|
+
- [可观测架构](./observability-architecture.md)
|
|
202
|
+
- [框架候选事项清单](../development/BACKLOG.md)
|
|
@@ -30,8 +30,8 @@ test id / correlation_id / trace_id / artifact reference 关联。
|
|
|
30
30
|
▼
|
|
31
31
|
EventBus(纯路由器,不绑定任何输出策略)
|
|
32
32
|
│ 组合根(pytest_configure / 测试隔离 bus)用
|
|
33
|
-
│ create_default_event_bus()
|
|
34
|
-
├──▶ ObservabilityLogObserver →
|
|
33
|
+
│ create_default_event_bus(settings) 工厂按本次运行配置挂默认观察者
|
|
34
|
+
├──▶ ObservabilityLogObserver → 实时结构化日志(开关与脱敏在构造时绑定)
|
|
35
35
|
├──▶ AllureObserver → 报告 step/attachment
|
|
36
36
|
├──▶ HttpRequestRecorder → 失败时注入完整 HTTP 现场(数据型取证)
|
|
37
37
|
├──▶ MetricsObserver → Prometheus 指标
|
|
@@ -56,17 +56,26 @@ OTel tracing(独立机制,不经 EventBus)
|
|
|
56
56
|
### EventBus(infrastructure/events/bus.py)
|
|
57
57
|
|
|
58
58
|
- **纯路由器**:构造时不挂任何订阅者;作用域(scope)过滤订阅。
|
|
59
|
-
- **组合根工厂** `create_default_event_bus()
|
|
60
|
-
|
|
59
|
+
- **组合根工厂** `create_default_event_bus(settings)`:按本次运行配置挂 `ObservabilityLogObserver`
|
|
60
|
+
(`observability.enabled=False` 时不挂)。`Bootstrap.run()` 默认用它创建总线并注入 Runtime,
|
|
61
|
+
pytest 会话复用这条总线;输出策略属于总线,共享总线的派生 Runtime 共享该策略。
|
|
61
62
|
- **publish_sync 语义**:同步上下文完整等待;异步上下文入队即返、任务被跟踪,
|
|
62
63
|
在确定性关键点 `await bus.drain()`(框架已在每个测试 teardown 的
|
|
63
64
|
autouse fixture 中自动 drain)。
|
|
64
65
|
- 事件发布失败不影响主流程,但记 debug 日志(R8.5,禁止静默吞)。
|
|
65
66
|
|
|
66
|
-
###
|
|
67
|
+
### 配置显式归属
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
观测相关的配置与策略都在构造/装配时确定,不在处理事件时查找:事件在源头按所属配置脱敏
|
|
70
|
+
(客户端/中间件构造时经 `resolve_sanitizer()`:显式 `sanitizer` → `runtime.settings.sanitize`
|
|
71
|
+
→ 纯默认 `SanitizeConfig()`);观察者的开关由创建它的组合根决定;进程级 structlog 管道的脱敏在
|
|
72
|
+
`configure_logging(logging_config, sanitize)` 时绑定。因此工作线程中处理事件与主线程一致。
|
|
73
|
+
详见 [配置显式归属方案](../development/config-ownership-plan.md)。
|
|
74
|
+
|
|
75
|
+
### 无事件总线的裸实例(库模式/手动调试)
|
|
76
|
+
|
|
77
|
+
能力客户端未注入 runtime / event_bus 时不产生观测输出(无隐藏的回退路径);需要实时日志时
|
|
78
|
+
传入 `create_default_event_bus(settings)` 创建的总线。
|
|
70
79
|
|
|
71
80
|
### 实时日志(ObservabilityLogObserver)
|
|
72
81
|
|
|
@@ -52,6 +52,28 @@
|
|
|
52
52
|
| 15 | [HTTP 接口支持面设计](http-client-interface-plan.md) | 中 | 后续讨论草案,不扩大 v4.10.3 收尾范围。多值查询参数被压成 `?a=2` 的缺陷已于 v4.10.3 修复;后续按 extensions、认证策略与 auth、Cookie 管理、流式接口及其余参数表达能力推进;客户端默认跟随重定向保持不变。详细边界、待定项和验收要求见方案,排期另定 |
|
|
53
53
|
| 16 | 消费项目迁移至 4.10.3 | 高(发布后) | Master/FSC:`max_retries`→`retries`(属性读取、构造参数、`model_copy` 键、测试桩、YAML、`HTTP__MAX_RETRIES` 文档),写接口改按请求声明 `retries=0`;切换前以本地源码跑单元、`--collect-only` 与代表性 API 用例,确认无未知参数 TypeError |
|
|
54
54
|
|
|
55
|
+
## 暂缓决策与重新评估条件
|
|
56
|
+
|
|
57
|
+
2026-11-05 按维护者补充的既有讨论结论整理。以下是当前保留的投入边界,不是本轮实施清单;
|
|
58
|
+
达到重新评估条件只表示可以讨论,不自动转为开发任务或发布承诺。消费者范围按当时讨论记录,
|
|
59
|
+
重新评估时再核对实际需求。
|
|
60
|
+
|
|
61
|
+
| 事项 | 保留结论与原因 | 什么时候再看 |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| 对账原语 | 暂不上收框架。比较循环主要集中在 FSC,尚只有一个明确消费者,不为单项目循环预建通用抽象 | FSC 认为手写循环难维护时,先在项目内提取纯函数;第二个项目出现同类需求后,再评估框架抽取 |
|
|
64
|
+
| 执行记录(可恢复的运行清单) | Master 与 FSC 已有共性,值得设计;抽取目标是输入指纹、原子落盘、续查等机制,不只是统一 JSON 格式 | 原前置为重试控制落地。HTTP 重试统一已随 [v4.10.3](../releases/v4.10.3.md) 落地,现可重新评估,尚未排期;设计时仍需区分请求重试与业务执行恢复 |
|
|
65
|
+
| 清理结果可见 | 降级并暂缓。此前认为命名规范与残留认领已提供兜底,暂不增加统一清理结果汇总或报告能力 | 暂不处理;后续是否恢复由维护者另行决定 |
|
|
66
|
+
| MaxCompute 引擎上收 | 继续由数仓项目承载;维护者确认此前已有记录。框架 `capabilities/engines/` 仍为预留骨架,不因目录存在而提前实现 | 出现第二个使用 MaxCompute 的项目时,重新核对可复用机制及业务边界 |
|
|
67
|
+
| 版本与发布核验(锁定版本与实际安装版本) | P2,暂不排期;关注依赖锁定结果与实际运行解释器所加载版本的一致性 | 在后续版本治理评估中安排,不因本次记录立即启动 |
|
|
68
|
+
| 运行前体检 | 在已有 doctor 与 baseline 上扩展,先列清具体缺项;不另建一套平行体检入口 | 后续有具体检查缺口时再评估,当前不急 |
|
|
69
|
+
|
|
70
|
+
### 与本轮代码评估的边界
|
|
71
|
+
|
|
72
|
+
“清理结果可见”暂缓的是汇总与报告增强,不表示接受清理对象归属错误。2026-11-05 独立评估
|
|
73
|
+
在假客户端上复现:同一 `SimpleCleanupManager` 先后为 A、B 两个 HTTP 客户端登记清理项,
|
|
74
|
+
两项最终均交给 B 执行。这属于多客户端清理的正确性问题,应单独跟踪修复,不能被上述暂缓决策覆盖。
|
|
75
|
+
该复现不表示已在真实环境发生误清理;本次只记录区别,不启动实现。
|
|
76
|
+
|
|
55
77
|
## 已决策记录
|
|
56
78
|
|
|
57
79
|
- **版本号(2026-08-20 决策)**:v4.9.21 发布。维护者判定:当前全部消费项目
|