Сохранять исходный порядок параметров тестов
Проблема:
Порядок параметров теста внутри отчёта TestOps отличный от исходного порядка внутри тестового проекта сбивает анализирующего при разборе проблемы с тестами.
Например, тестовый метод в проекте выглядит как MethodName("param1", 42, True), а в TestOps может отображаться как MethodName(True, "param1", 42).
Также проблема распространяется на данные полученные из API TestOps.
В нашем CI-процессе используется генератор отчётов сопоставляющий данные из результатов NUnit и данными из TestOps(статистика запусков, прилинкованные дефекты и др).
Это приводит к тому, что имена тестов в Allure и в NUnit-отчёте не совпадают. В результате тесты не распознаются как уже выполнявшиеся или задефектованные, что искажает статистику регрессии.
Что предлагаю:
Я хочу, чтобы Allure TestOps сохранял исходный порядок параметров как он описан в тестовом методе. Это можно реализовать одним из следующих способов:
- Хранить параметры в виде отдельного массива (parameters), где порядок элементов строго соответствует переданному.
- Или сохранять имя теста в том виде, в каком оно было передано, без перестановки параметров, но при этом гарантировать, что имя не обрезается из-за ограничений длины.
Обходной путь:
В настоящее время вынуждены реализовывать обходное решение на стороне нашего инструмента генерации отчётов.
Мы нормализуем имена тестов:
При разборе NUnit-отчёта выделяем метод и параметры, сортируем параметры по строковому представлению и строим каноническое имя.
При запросе данных из Allure делаем то же самое, чтобы обеспечить совпадение ключей.
Недостатки обходного пути:
- Необходимость парсить параметры из название теста NUnit. Сложности возникает при наличии запятых в значениях параметров.
- Невозможно гарантировать точность сопоставление тестов с параметрами одного типа, например тесты с разными параметрами test(true, false, true) и test(true, true, false) после сортировки примут идентичный вид test(false, true, true). Это особенно актуально для комбинаторных проверок
Как часто сталкиваетесь:
Ежедневно