<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="2" tests="29" time="0.884" timestamp="2026-04-24T13:28:01.968424+08:00" hostname="HenryLin-SFP7"><testcase classname="tests.src.core.math.test_zscore.TestStandardizationMath" name="test_normal_zscore_broadcasting" time="0.007" /><testcase classname="tests.src.core.math.test_zscore.TestStandardizationMath" name="test_ieee754_division_by_zero_intercept" time="0.001" /><testcase classname="tests.src.core.math.test_zscore.TestStandardizationMath" name="test_mad_clip_functionality" time="0.001" /><testcase classname="tests.src.core.sql.test_aligner.TestDuckDBTimeAligner" name="test_output_contains_math_anchor" time="0.001" /><testcase classname="tests.src.core.sql.test_aligner.TestDuckDBTimeAligner" name="test_output_contains_bigint_cast" time="0.002" /><testcase classname="tests.src.core.sql.test_aligner.TestDuckDBTimeAligner" name="test_output_bans_stateful_functions" time="0.001" /><testcase classname="tests.src.core.sql.test_aligner.TestDuckDBTimeAligner" name="test_input_col_interpolated" time="0.001" /><testcase classname="tests.src.core.storage.test_contract" name="test_sink_parquet_injects_strict_params" time="0.004" /><testcase classname="tests.src.core.stream.test_engine" name="test_stream_engine_normal_flow" time="0.002" /><testcase classname="tests.src.core.stream.test_engine" name="test_stream_engine_memory_limit_triggered" time="0.005" /><testcase classname="tests.src.core.test_config_loader" name="test_load_valid_config" time="0.013" /><testcase classname="tests.src.core.test_config_loader" name="test_load_missing_file" time="0.003" /><testcase classname="tests.src.core.test_config_loader" name="test_load_empty_whitelist_triggered" time="0.006" /><testcase classname="tests.src.core.test_config_loader" name="test_load_invalid_spearman_mode" time="0.009" /><testcase classname="tests.src.core.test_config_loader" name="test_load_missing_required_field" time="0.007" /><testcase classname="tests.src.core.test_constants.TestPhysicalConstants" name="test_time_alignment_constants" time="0.002" /><testcase classname="tests.src.core.test_constants.TestPhysicalConstants" name="test_storage_contract_constants" time="0.001" /><testcase classname="tests.src.core.test_constants.TestPhysicalConstants" name="test_label_math_bounds" time="0.001" /><testcase classname="tests.src.core.test_golden_precision" name="test_ols_ewm_golden_precision" time="0.001"><skipped type="pytest.skip" message="等待 S3 OLS/EWM 算法实现及 .npy 基线文件生成后解除封印">C:\Users\huaru\project\pers_website\pers-website-fund-selection-system\tests\src\core\test_golden_precision.py:10: 等待 S3 OLS/EWM 算法实现及 .npy 基线文件生成后解除封印</skipped></testcase><testcase classname="tests.src.core.test_schema_symmetry" name="test_s2_s3_s4_schema_symmetry" time="0.001"><skipped type="pytest.skip" message="等待 S2/S3/S4 业务骨架就绪后解除封印">C:\Users\huaru\project\pers_website\pers-website-fund-selection-system\tests\src\core\test_schema_symmetry.py:10: 等待 S2/S3/S4 业务骨架就绪后解除封印</skipped></testcase><testcase classname="tests.src.core.test_telemetry.TestProfileStep" name="test_preserves_return_value" time="0.002" /><testcase classname="tests.src.core.test_telemetry.TestProfileStep" name="test_json_output_to_stderr_only" time="0.002" /><testcase classname="tests.src.core.test_telemetry.TestProfileStep" name="test_json_structure_completeness" time="0.001" /><testcase classname="tests.src.core.test_telemetry.TestProfileStep" name="test_duration_sec_non_negative" time="0.001" /><testcase classname="tests.src.core.test_telemetry.TestProfileStep" name="test_peak_rss_mb_equals_max_of_start_and_end" time="0.001" /><testcase classname="tests.src.pipelines.s2.test_step_1_1.TestTranscodeCsvToParquet" name="test_polars_forces_utf8_and_date" time="0.017" /><testcase classname="tests.src.pipelines.s2.test_step_1_1.TestTranscodeCsvToParquet" name="test_net_value_forces_float64" time="0.009" /><testcase classname="tests.src.pipelines.s2.test_step_1_1.TestExecuteStep1_1" name="test_d1_whitelist_blocks_invalid_funds" time="0.050" /><testcase classname="tests.src.pipelines.s2.test_step_1_1.TestExecuteStep1_1" name="test_math_aligned_monday_and_max_value" time="0.042" /></testsuite></testsuites>