Вопрос: Пишу сценарий проверки функционала, который должен создать и провести документ и мне нужно проверить, что этот документ проведен. Если документ не проведен, шаг должен упасть. Но в библиотеке шагов не нахожу подходящего шага. Как проверить, что документ проведен? Я знаю номер документа и могу найти его по номеру.
Готового шага, который бы мог проверить состояние проведения документа по номеру в библиотеке в VA нет
Из готовых шагов максимально близко к тому, чтобы реализовать нужное поведение, это шаги расширения VAExtension
И я получаю состояние текущего объекта (Расширение)
И я получаю состояние объекта по навигационной ссылке "НавСсылка" (расширение)
Оба считывают состояние объекта в автоматически создаваемые переменные, среди которых есть переменная
Проведен булева типа Истина/Ложь в зависимости от того, проведен или нет документ.С его помощью для решения поставленной задачи нужно по номеру найти нужный документ, получить состояние объекта, и если документ не проведен, то упасть с ошибкой:
И Я запоминаю в переменную "НомерДок" значение "000000018"
И Я открываю навигационную ссылку "e1cib/list/Документ.Заказ"
И Я очищаю фильтр на форме списка
И Я устанавливаю фильтр на список если это возможно
| 'Номер' | 'равно' | '$НомерДок$' |
И в таблице 'Список' я выбираю текущую строку
Тогда открылось окно "Заказ * от *"
И я получаю состояние текущего объекта (Расширение)
И я выполняю код встроенного языка
"""bsl
Если Не Контекст.Проведен Тогда
ВызватьИсключение СтрШаблон("Документ Заказ %1 не проведен, а ожидалось, что будет проведен", Контекст.НомерДок);
КонецЕсли;
"""
Такой способ работает в том числе в случае, когда менеджер и клиент тестирования находятся в разных базах. Но выглядит, честно говоря, громоздко, и как минимум эти шаги надо спрятать в группу или еще лучше вынести в экспортный сценарий. Если же задача не разовая, то стоит рассмотреть возможность написать свой собственный шаг "кодом".
У нас на одном небольшом внутреннем проекте менеджер и клиент запускаются в одной базе, и там мы для решения подобной задачи реализовали более универсальный и компактный экспортный сценарий, использующий шаги, которые выполняются в контексте менеджера тестирования:
Сценарий: документ "[ВидДокумента]" с реквизитами проведен
И я удаляю переменную '__ДокСсылка'
Тогда я сохраняю в переменную "__ДокСсылка" ссылку на документ "[ВидДокумента]" с реквизитами
| Номер | '000000001' |
И я выполняю код встроенного языка на сервере без контекста с передачей переменных
"""bsl
Если Не Контекст.__ДокСсылка.Проведен Тогда
ВызватьИсключение СтрШаблон("Документ %1 не проведен!", Контекст.__ДокСсылка);
КонецЕсли;
"""
Используется этот шаг так:
И документ "Заказ" с реквизитами проведен
| Номер | '000000018' |
Это была еженедельная рубрика #ВопросОтвет. Присылайте вопросы по теме тестирования в комментариях к постам или в личные сообщения и я постараюсь на них ответить в формате подобных постов или лично.
🦋 @QA_1C