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

Публикация № 1257043

Администрирование - Администрирование данных 1С - Тестирование и исправление

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

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

Тестировалось на платформе 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: тестирование проведения документов:

.7z 2,82Kb
28.06.20
20
.7z 2,82Kb 20 Скачать бесплатно

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 5821 30.06.20 08:29 Сейчас в теме
Для универсальности стоит добавить список общих реквизитов и просто имен колонок таблиц движений, исключаемых из проверки (например "Дата изменения" записи).
5. q_i 406 30.06.20 13:47 Сейчас в теме
(1) Настройки xUnitFor1C я так и не осилил (руки-ноги не дошли разобраться). Если пришлёте патч, внесу Ваши изменения.
2. artbear 1185 30.06.20 10:56 Сейчас в теме
(0) Как интересно и полезно.
Предлагаю включить эти тесты в виде еще одних дымовых тестов в Ванесса-АДД - наследник xUnitFor1C
что скажешь?
4. q_i 406 30.06.20 13:39 Сейчас в теме
(2) Да, конечно, без проблем. Код открыт, лицензия свободная, идея бесплатная. )))
О! Оказывается я отстал от жизни, уже есть какой-то Ванесса-АДД? Сейчас почитаю, что за зверь!
6. artbear 1185 02.07.20 13:23 Сейчас в теме
(4) ты очень-очень отстал, Ванесса-АДД уже несколько лет )
7. q_i 406 02.07.20 18:07 Сейчас в теме
(6) Почему-то вспомнился именно этот момент из "Разрушителя": https://www.youtube.com/watch?v=4-C8P8RWux4 )))))
Ничего, подтянусь! И с ракушками разберусь, и с Ванесса-АДД! ;)
3. artbear 1185 30.06.20 10:58 Сейчас в теме
(0) на гитхабе на репо я подписан, оказывается. Странно, почему я пропустил эти тесты и не включил в Ванесса-АДД.
Оставьте свое сообщение

См. также

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Перенос данных из 1C8 в 1C8 Универсальные обработки Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    202098    3077    ekaruk    178    

Загрузка данных из 1С МиниДеньги в 1С:Деньги 8, редакция 2.0

Обмен через XML Перенос данных из 1C8 в 1C8 v8 Домашние учет и финансы УУ Абонемент ($m)

Обработка для первоначальной загрузки данных (справочников и операций) в настольную программу 1С:Деньги 8, редакция 2.0 из файлы резервной копии мобильной программы 1С Миниденьги.

2 стартмани

01.10.2015    14832    14    Claus32    5    

Редактор чеков ККМ Розница 2.0 - 2.3

Обработка документов Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд БУ НУ Абонемент ($m)

Обработка чеков ККМ списком (редактирование, удаление, ...). Переформирование ОРП, связь чеков с ОРП. Редактирование времени КС. Редактирование суммы и времени выемки.

1 стартмани

06.08.2015    47878    450    Dima_    83    

Загрузка из Excel в 1С:Розница

Обработка документов Обработка справочников Загрузка и выгрузка в Excel Учет ТМЦ Учет ТМЦ v8 Розница Россия УУ Абонемент ($m)

Универсальная загрузка Excel файлов в 1С:Розница 2.0

1 стартмани

27.05.2015    14613    90    KarinaSV    7    

Автоматическая установка себестоимости номенклатуры для конфигурации Розница 2.0 (2.1) +Бонус, исправляем ошибки при настройке расписания запуска для внешних обработок в Рознице 2.0

Ценообразование, прайсы Обработка документов Розничная торговля Ценообразование, анализ цен Розничная торговля Ценообразование, анализ цен v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Обработка для автоматического создания документов Установка себестоимости, в случае если себестоимость не установлена на момент продажи. Помогает упростить установку себестоимости номенклатуры, если у вас в базе ведется учет по нескольким магазинам. Тестировалась на релизе 2.0.8.12 и 2.1.7.14. Подойдет для тех систем, где себестоимость номенклатуры одинакова для всех магазинов.

1 стартмани

31.03.2014    26199    38    sanches    15    

Выемка денежных средств из КассыККМ. Розница 2.0

Кассовые операции ККМ Кассовые операции v8 Розница УУ Абонемент ($m)

Уставшим от отсутствия ВыемкиДС после закрытия кассовой смены посвящается. Подключаемая обработка. Управляемый интерфейс.

1 стартмани

12.12.2012    74963    287    StepByStep    40