Исходный код test_suite.test_report_content

"""
Модуль тестов для проверки содержимого отчетов.

Содержит тесты, проверяющие корректность содержимого JSON отчетов,
включая метаданные, метрики атак и их валидность.
"""
import json
import logging

logger = logging.getLogger(__name__)

[документация] def test_report_content(prepared_test_environment): """Тест содержимого отчета. Проверяет корректность содержимого JSON отчета: наличие обязательных полей, типы данных и допустимые диапазоны значений метрик. :param prepared_test_environment: Подготовленное тестовое окружение :type prepared_test_environment: dict """ json_report_path = prepared_test_environment["json_report_path"] tmp_path = prepared_test_environment["tmp_path"] # Загружаем отчет with open(json_report_path, 'r', encoding='utf-8') as f: report_data = json.load(f) # Проверяем содержимое метаданных metadata = report_data["metadata"] assert metadata["model_type"] is not None, "model_type should not be None" assert metadata["model_name"] is not None, "model_name should not be None" assert metadata["dataset_name"] is not None, "dataset_name should not be None" assert metadata["timestamp"] is not None, "timestamp should not be None" # Проверяем метрики атак metrics = report_data["metrics"] assert len(metrics) > 0, "Should have at least one attack metric" for metric in metrics: assert "attack_type" in metric, "Each metric should have attack_type" assert "success_rate" in metric, "Each metric should have success_rate" assert isinstance(metric["success_rate"], (int, float)), "success_rate should be numeric" # Проверяем, что success_rate в допустимом диапазоне assert 0 <= metric["success_rate"] <= 1, "success_rate should be between 0 and 1" success_msg = "✅ Report content validation passed" print(success_msg) logger.info(success_msg)