Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перехват и вывод в отчет сообщений пользователю в дымовых тестах #1075

Open
p0s0l opened this issue Feb 14, 2023 · 2 comments
Milestone

Comments

@p0s0l
Copy link

p0s0l commented Feb 14, 2023

Существует проблема
Некоторые дымовые тесты выполняются с ошибкой. Например "Не удалось провести документ", или "Не удалось записать...". А причина подобной ошибки выводится в сообщениях пользователю, которые в отчеты не попадают.

Хотелось бы иметь следующую функциональность
В вывод об ошибке добавлять сообщения пользователю, чтобы сократить время на анализ причин ошибок и было понятно, как избежать подобных ошибок в будущем (уточнить отборы, исключения и т.д.).
Для этого:
Перед выполнением теста нужно зачистить предыдущие сообщения: ПолучитьСообщенияПользователю(Истина);
При ошибке собрать накопленные сообщения ПолучитьСообщенияПользователю(Истина)

Это касается всех дымовых тестов, которые выполняют действия, которые могут быть прерваны с помощью Отказ = Истина:
Открытие форм, Запись справочников, Проведение документов.

Пример вывода в allure (желаемое дополнение начинается с "Сообщения: "):

"message": "Не удалось записать "Транспортные происшествия (Вид происшествия)"!
Сообщения: Редактирование общих данных запрещено.
",
"trace": "Не удалось записать "Транспортные происшествия (Вид происшествия)"!
{ВнешняяОбработка.тесты_ЗаписьГруппСправочников.МодульОбъекта(71)}:ГруппаОбъект.Записать();
{(1)}:КонтекстВыполнения.Тест_ЗаписатьГруппуСправочника(Параметры[0]);
{ВнешняяОбработка.xddTestRunner.МодульОбъекта(391)}:Выполнить(ИсполняемыйКод);
{ВнешняяОбработка.xddTestRunner.МодульОбъекта(282)}:ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры);
{ВнешняяОбработка.xddTestRunner.Форма.УправляемаяФорма.Форма(1049)}:Результат.РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов);

по причине:
Не удалось записать "Транспортные происшествия (Вид происшествия)"!"

Пример вывода junit:

<error message="Не удалось записать &quot;Транспортные происшествия (Вид происшествия)&quot;!
Сообщения: Редактирование общих данных запрещено.
------------------
Не удалось записать &quot;Транспортные происшествия (Вид происшествия)&quot;!
{ВнешняяОбработка.тесты_ЗаписьГруппСправочников.МодульОбъекта(71)}:ГруппаОбъект.Записать();
{(1)}:КонтекстВыполнения.Тест_ЗаписатьГруппуСправочника(Параметры[0]);
{ВнешняяОбработка.xddTestRunner.МодульОбъекта(391)}:Выполнить(ИсполняемыйКод);
{ВнешняяОбработка.xddTestRunner.МодульОбъекта(282)}:ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры);
{ВнешняяОбработка.xddTestRunner.Форма.УправляемаяФорма.Форма(1049)}:Результат.РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов);

по причине:
Не удалось записать &quot;Транспортные происшествия (Вид происшествия)&quot;!"/>

Т.о. предлагаю дополнять короткий текст ошибки сообщениями пользователя. Функционал можно включать опциональным флагом в настройках дымовых тестов.

@artbear artbear added this to the 6.9.0 milestone Mar 6, 2023
@BarinovIN
Copy link
Contributor

Может быть лучше, чтобы тесты совсем не падали на таких моментах? Это ведь не ошибка приложения, а его задуманное поведение. Срабатывает какой-то контроль, выдаётся сообщение пользователю.

Отличать ошибки приложения от намеренной отмены действий через Отказ = Истина предлагаю так:
В системном окне ошибки (том, для которого ИмяФормы = "ErrorWindow") есть кнопка OpenReport в интерфейсе это гиперссылка "Сформировать отчет об ошибке".
Если эта кнопка видна, то это ошибка приложения, тест должен упасть.
Если кнопка не видна, то это прерванное действие, достаточно нажать "ОК" и продолжать тест.

@BarinovIN
Copy link
Contributor

Отличать ошибки приложения от намеренной отмены действий через Отказ = Истина предлагаю так: ...

Нет, так могут быть пропущены некоторые ошибки, например, неустановленные параметры динамических списков. Отзываю это своё предложение.

Но избавиться от падений на прерванных через Отказ = Истина действиях можно через ключ ПропускаемыеИсключения, например, добавив строки "Не удалось провести" и "Не удалось записать".

Хотя, конечно, лучше когда документ перепроведётся - больше кода выполнится, покрытие тестом будет шире.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants