Файл тестов для xUnitFor1C: тестирование проведения документов

30.06.20

Разработка - Инструментарий разработчика

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Файл тестов для xUnitFor1C: тестирование проведения документов:
.7z 2,82Kb
61
61 Скачать бесплатно

Тестировалось на платформе 8.3.15.1830

После очередного обновления нетиповой бухгалтерии захотелось проверить, что в результате обновления не пострадали механизмы проведения документов. А именно: нужно было убедиться в том, что а) документы проводятся в принципе; б) движения (бух.проводки, записи регистров) документов после перепроведения в новой конфигурации остаются такими же, как и в старой.

Для этого был нарисован файл тестов для xUnitFor1C, который отбирает по 10 документов каждого вида за последний год, перепроводит их, и сравнивает движения по всем регистрам до и после перепроведения. Количество отбираемых документов и настройки периода можно изменить в процедуре ЗаполнитьНаборТестов() - см.структуру ПараметрыОтбораДокументов.

Проект на гитхабе: https://github.com/q-i/tests_for_xUnitFor1C

Рацпредложения приветствуются.

Исходный код модуля обработки файла тестов (лицензия Apache 2.0 для совместимости с проектом xUnitFor1C):

Перем КонтекстЯдра;
Перем Утверждения;
Перем УтвержденияПроверкаТаблиц;

//{ основная процедура для юнит-тестирования xUnitFor1C
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
	КонтекстЯдра = КонтекстЯдраПараметр;
	Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
	УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц");
КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт
	КонтекстЯдра = КонтекстЯдраПараметр;
	
	// за последний год
	КонецПериода = ТекущаяДатаСеанса();
	НачалоПериода = ДобавитьМесяц(КонецПериода, -12);
	
	ПараметрыОтбораДокументов = Новый Структура;
	ПараметрыОтбораДокументов.Вставить("НачалоПериода", НачалоПериода);
	ПараметрыОтбораДокументов.Вставить("КонецПериода", КонецПериода);
	ПараметрыОтбораДокументов.Вставить("КоличествоДокументов", 10);
	
	Для Каждого МетаОбъект Из Метаданные.Документы Цикл
		Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить 
			И ПравоДоступа("Проведение", МетаОбъект) Тогда
			ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект, ПараметрыОтбораДокументов);
		КонецЕсли; 
	КонецЦикла; 
	
КонецПроцедуры

Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект, ПараметрыОтбораДокументов)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	Ссылка,
	|	Представление
	|ИЗ
	|	Документ." + МетаОбъект.Имя + "
	|ГДЕ
	|	Проведен	
	|	И Дата МЕЖДУ &НачалоПериода И &КонецПериода
	|
	|УПОРЯДОЧИТЬ ПО
	|	МоментВремени Убыв";
	Запрос.УстановитьПараметр("НачалоПериода", ПараметрыОтбораДокументов.НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода", ПараметрыОтбораДокументов.КонецПериода);
	Запрос.Текст = СтрЗаменить(Запрос.Текст, 
								"ВЫБРАТЬ ПЕРВЫЕ 1", 
								"ВЫБРАТЬ ПЕРВЫЕ " + Формат(ПараметрыОтбораДокументов.КоличествоДокументов, "ЧГ=")
								);	
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат;	
	КонецЕсли; 
	 
	
	НаборТестов.НачатьГруппу("Документ." + МетаОбъект.Имя);
	
	Выборка = РезультатЗапроса.Выбрать();
	Пока Выборка.Следующий() Цикл
		ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка);
		ПредставлениеТеста = Выборка.Представление;
		НаборТестов.Добавить("Тест_ПровестиДокумент", ПараметрыТеста, ПредставлениеТеста);			
	КонецЦикла; 
		
КонецПроцедуры

Функция ПолучитьДвиженияДокумента(ДокументОбъект)
	
	Если 1=2 Тогда
		ДокументОбъект = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();	
	КонецЕсли; 
	
	Результат = Новый Соответствие; 
	
	Для Каждого Движение Из ДокументОбъект.Движения Цикл
		ТипДвижения = ТипЗнч(Движение);
		Движение.Прочитать();
		ТаблицаДвижения = Движение.Выгрузить();
		Результат.Вставить(ТипДвижения, ТаблицаДвижения);
	КонецЦикла; 
	
	Возврат Результат;
	
КонецФункции
//}

//{ Блок юнит-тестов
Процедура ПередЗапускомТеста() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	Если ТранзакцияАктивна() Тогда
	    ОтменитьТранзакцию();
	КонецЕсли;
КонецПроцедуры

Процедура Тест_ПровестиДокумент(ДокументСсылка) Экспорт
	
	Если 1=2 Тогда
		ДокументСсылка = Документы.СчетНаОплатуПокупателю.ПустаяСсылка();	
	КонецЕсли; 
	
	ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
	
	ДвиженияДо = ПолучитьДвиженияДокумента(ДокументОбъект);
	
	ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
	
	ДвиженияПосле = ПолучитьДвиженияДокумента(ДокументОбъект);
	
	Для Каждого КлючИЗначение Из ДвиженияДо Цикл
		ТипДвижения = КлючИЗначение.Ключ;
		ТаблицаДвиженияДо = КлючИЗначение.Значение;
		ТаблицаДвиженияПосле = ДвиженияПосле.Получить(ТипДвижения);
		УтвержденияПроверкаТаблиц.ПроверитьРавенствоТаблиц(ТаблицаДвиженияДо, ТаблицаДвиженияПосле, "Отличаются движения по регистру " + ТипДвижения);
	КонецЦикла; 
	
КонецПроцедуры

//}

 

xUnitFor1C тестирование тест проведение

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 руб.

02.09.2020    166738    923    403    

899

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    10383    89    37    

96

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    25673    88    48    

132

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    16455    40    9    

75

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11177    40    27    

66

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 руб.

14.01.2013    189835    1146    0    

916

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    103682    244    100    

306

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

2220 руб.

21.02.2023    8472    8    38    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7239 30.06.20 08:29 Сейчас в теме
Для универсальности стоит добавить список общих реквизитов и просто имен колонок таблиц движений, исключаемых из проверки (например "Дата изменения" записи).
5. q_i 584 30.06.20 13:47 Сейчас в теме
(1) Настройки xUnitFor1C я так и не осилил (руки-ноги не дошли разобраться). Если пришлёте патч, внесу Ваши изменения.
2. artbear 1565 30.06.20 10:56 Сейчас в теме
(0) Как интересно и полезно.
Предлагаю включить эти тесты в виде еще одних дымовых тестов в Ванесса-АДД - наследник xUnitFor1C
что скажешь?
4. q_i 584 30.06.20 13:39 Сейчас в теме
(2) Да, конечно, без проблем. Код открыт, лицензия свободная, идея бесплатная. )))
О! Оказывается я отстал от жизни, уже есть какой-то Ванесса-АДД? Сейчас почитаю, что за зверь!
6. artbear 1565 02.07.20 13:23 Сейчас в теме
(4) ты очень-очень отстал, Ванесса-АДД уже несколько лет )
7. q_i 584 02.07.20 18:07 Сейчас в теме
(6) Почему-то вспомнился именно этот момент из "Разрушителя": https://www.youtube.com/watch?v=4-C8P8RWux4 )))))
Ничего, подтянусь! И с ракушками разберусь, и с Ванесса-АДД! ;)
3. artbear 1565 30.06.20 10:58 Сейчас в теме
(0) на гитхабе на репо я подписан, оказывается. Странно, почему я пропустил эти тесты и не включил в Ванесса-АДД.
8. Xershi 1556 04.07.20 19:14 Сейчас в теме
(3) запилите публикацию для автомейшин или как её по русски писать.
9. artbear 1565 06.07.20 12:20 Сейчас в теме
(8) Зачем? текущие тесты подойдут только для xUnitFor1C и для Ванесса-АДД !
10. Xershi 1556 06.07.20 12:33 Сейчас в теме
(9) мне интересно через предложенное решение делать тесты.
11. artbear 1565 06.07.20 12:37 Сейчас в теме
(10) делай, кто мешает. но универсальные дымовые тесты ты через бдд-часть удобно и просто не сделаешь (
а текущие тесты, как и многие другие дымовые из Ванесса-АДД, универсальны.
12. artbear 1565 06.07.20 12:38 Сейчас в теме
(10) я сам люблю и развиваю БДД-тестирование в Ванесса-АДД, но я знаю и о минусах такого тестирования.
13. aayukhanov_corp 07.07.20 23:43 Сейчас в теме
(0) я добавил ПР в Ванесса-АДД на базе твоих тестов https://github.com/vanessa-opensource/add/pull/768
+ также добавил возможность настройки через json-файлы
14. q_i 584 10.07.20 17:34 Сейчас в теме
15. artbear 1565 10.07.20 17:35 Сейчас в теме
(14)даже успел смержить и добавил возможность настройки
16. q_i 584 10.07.20 18:07 Сейчас в теме
(15) Снимаю шляпу, маэстро! :)
Оставьте свое сообщение