This commit is contained in:
+85
-19
@@ -60,10 +60,21 @@ def safe_log_direct(message, category="TEST"):
|
||||
# Игнорируем все исключения - эта функция должна быть максимально безопасной
|
||||
pass
|
||||
|
||||
def test_category_description_load(category_id):
|
||||
"""Тестирует загрузку описания категории"""
|
||||
def test_category_description_load(category_id, category_number=None, total_count=None):
|
||||
"""Тестирует загрузку описания категории
|
||||
|
||||
Args:
|
||||
category_id: ID категории для тестирования
|
||||
category_number: Номер категории в последовательности (опционально)
|
||||
total_count: Общее количество категорий (опционально)
|
||||
"""
|
||||
if category_number and total_count:
|
||||
header = f"НАЧАЛО ТЕСТИРОВАНИЯ [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
|
||||
else:
|
||||
header = f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}"
|
||||
|
||||
log_message("=" * 80)
|
||||
log_message(f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}")
|
||||
log_message(header)
|
||||
log_message("=" * 80)
|
||||
|
||||
# Проверка наличия префикса URL
|
||||
@@ -231,13 +242,14 @@ def test_category_description_load(category_id):
|
||||
description = None
|
||||
|
||||
# Итоговый результат
|
||||
log_message("=" * 80)
|
||||
log_message(f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}")
|
||||
log_message("=" * 80)
|
||||
if category_number and total_count:
|
||||
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
|
||||
else:
|
||||
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}"
|
||||
|
||||
print(f"\nУСПЕХ: Описание категории {category_id} успешно загружено")
|
||||
print(f"Размер описания: {len(description) if description else 0} символов")
|
||||
print(f"Лог сохранен в: {TEST_LOG_FILE}")
|
||||
log_message("=" * 80)
|
||||
log_message(footer)
|
||||
log_message("=" * 80)
|
||||
|
||||
return True
|
||||
|
||||
@@ -247,18 +259,30 @@ def main():
|
||||
description='Тестирование загрузки описания категории из API VOLK',
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
Пример использования:
|
||||
Примеры использования:
|
||||
python volk_category_testing.py volk26_nri
|
||||
python volk_category_testing.py volk26_nri volk26_other volk26_third
|
||||
"""
|
||||
)
|
||||
parser.add_argument(
|
||||
'category_id',
|
||||
'category_ids',
|
||||
type=str,
|
||||
help='ID категории для тестирования (например: volk26_nri)'
|
||||
nargs='+',
|
||||
help='ID категорий для тестирования (от 1 до 10 штук, например: volk26_nri volk26_other)'
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
category_id = args.category_id
|
||||
category_ids = args.category_ids
|
||||
|
||||
# Проверка количества ID
|
||||
if len(category_ids) == 0:
|
||||
print("ОШИБКА: Не указан ни один ID категории")
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
if len(category_ids) > 10:
|
||||
print(f"ОШИБКА: Указано слишком много ID категорий ({len(category_ids)}). Максимум 10.")
|
||||
sys.exit(1)
|
||||
|
||||
# Проверка наличия необходимых переменных окружения
|
||||
if not VOLK_CATEGORY_DESC_PREFIX:
|
||||
@@ -272,20 +296,62 @@ def main():
|
||||
sys.exit(1)
|
||||
|
||||
log_message("=" * 80)
|
||||
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ")
|
||||
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИЙ")
|
||||
log_message(f"Время запуска: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
log_message(f"ID категории: {category_id}")
|
||||
log_message(f"Количество категорий для обработки: {len(category_ids)}")
|
||||
log_message(f"ID категорий: {', '.join(category_ids)}")
|
||||
log_message(f"Префикс URL: {VOLK_CATEGORY_DESC_PREFIX}")
|
||||
log_message(f"Версия API: {VOLK_API_VERSION}")
|
||||
log_message(f"Лог-файл: {TEST_LOG_FILE}")
|
||||
log_message("=" * 80)
|
||||
|
||||
success = test_category_description_load(category_id)
|
||||
# Обработка каждой категории последовательно
|
||||
total_count = len(category_ids)
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
|
||||
if success:
|
||||
sys.exit(0)
|
||||
else:
|
||||
for index, category_id in enumerate(category_ids, start=1):
|
||||
log_message("")
|
||||
log_message("")
|
||||
log_message(f">>> ОБРАБОТКА КАТЕГОРИИ {index} из {total_count}: {category_id}")
|
||||
log_message("")
|
||||
|
||||
print(f"\n[{index}/{total_count}] Обработка категории: {category_id}")
|
||||
|
||||
success = test_category_description_load(category_id, category_number=index, total_count=total_count)
|
||||
|
||||
if success:
|
||||
success_count += 1
|
||||
print(f"[{index}/{total_count}] ✓ УСПЕХ: Категория {category_id} обработана успешно")
|
||||
else:
|
||||
fail_count += 1
|
||||
print(f"[{index}/{total_count}] ✗ ОШИБКА: Категория {category_id} не обработана")
|
||||
|
||||
# Итоговая статистика
|
||||
log_message("")
|
||||
log_message("")
|
||||
log_message("=" * 80)
|
||||
log_message("ИТОГОВАЯ СТАТИСТИКА")
|
||||
log_message("=" * 80)
|
||||
log_message(f"Всего категорий обработано: {total_count}")
|
||||
log_message(f"Успешно: {success_count}")
|
||||
log_message(f"С ошибками: {fail_count}")
|
||||
log_message(f"Время завершения: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
log_message("=" * 80)
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print(f"ИТОГИ:")
|
||||
print(f" Всего категорий: {total_count}")
|
||||
print(f" Успешно: {success_count}")
|
||||
print(f" С ошибками: {fail_count}")
|
||||
print(f" Лог сохранен в: {TEST_LOG_FILE}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
# Возвращаем код ошибки, если были неудачи
|
||||
if fail_count > 0:
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user