Skip to content

Пример теста СКД и отчета, сделанного на компоновке

Евгений Мартыненков edited this page Apr 12, 2016 · 6 revisions

Простой пример теста проверки отчета на СКД.

В тесте сначала создаются тестовые данные в базе, затем выполняется отчет на СКД, получается сводная таблица. Эта таблица сверяется с эталоном.

Можно скачать сам файл теста (это внешняя обработка )

Код самого теста (модуль этой обработки) - приведен ниже по тексту.

Настройка схемы компоновки в отчете

image

image

Эталон результата работы СКД (на базе указанной выше настройки)

image

Макет данных для теста

image

Код теста

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

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
	КонтекстЯдра = КонтекстЯдраПараметр;
	Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
	ГенераторТестовыхДанных = КонтекстЯдра.Плагин("СериализаторMXL");
	УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц");
КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
	НаборТестов.Добавить("Тест_ПроверитьОтчетНаСоответствиеЭталону");
КонецПроцедуры

Процедура Тест_ПроверитьОтчетНаСоответствиеЭталону() Экспорт
	Перем Расшифровка; // сюда будет передана информация расшифровки СКД, т.к. в эталоне она тоже есть
	
	// создание тестовых данных из табличного документа
	МакетТестовыеДанные = ПолучитьМакет("ТестовыеДанные");
	ТестовыеДанные = ГенераторТестовыхДанных.СоздатьДанныеПоТабличномуДокументу(МакетТестовыеДанные);
	
	Утверждения.ПроверитьБольше(ТестовыеДанные.Количество(), 0, "Ожидали, что загрузка макета загрузит данные больше 0");
	
	// Получение эталонного отчета
	// Важно эталон получать именно так из-за плясок с кодом языка макета
	МакетЭталона = ПолучитьМакет("Эталон");
	Эталон = Новый ТабличныйДокумент;
	Эталон.Вывести(МакетЭталона);
	
	// Формирование отчета
	РезультатОтчета = Новый ТабличныйДокумент;
	Отчет = Отчеты.ТестовыйОтчетСКДДляСравнениеСЭталоном.Создать();
	Отчет.СкомпоноватьРезультат(РезультатОтчета, Расшифровка);
	
	#Если НЕ (ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение) Тогда

		УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Эталон, РезультатОтчета, "Ожидали, что эталон (слева) совпадет с результатом (справа), а они различны!");
		
	#Иначе
		// Сохранение в файлы mxl
		ИмяФайлаЭталона = ПолучитьИмяВременногоФайла("mxl");
		ИмяФайлаРезультатаОтчета = ПолучитьИмяВременногоФайла("mxl");
		Эталон.Записать(ИмяФайлаЭталона);
		РезультатОтчета.Записать(ИмяФайлаРезультатаОтчета);
			
		// Сравнение файлов
		
		// Если Истина, то будет показано окно демонстрации различий, если файлы различны
		// Использовать только для расследования ошибки, если тест падает на сравнении
		ПоказатьРазличия = Истина;
		
		// ПараметрыСравнения заполняется по необходимости. Если не заполнены, то используются значения по умолчанию платформы
		// Если не указан способ сравнения, будет попытка определить автоматически по расширению файла:
		//  mxl - ТабличныйДокумент
		//  txt,xml - ТекстовыйДокумент
		ПараметрыСравнения = Новый Структура;
		//ПараметрыСравнения.Вставить("ИгнорироватьПустоеПространство", Истина);
		//ПараметрыСравнения.Вставить("УчитыватьРазделителиСтрок", Ложь);
		//ПараметрыСравнения.Вставить("УчитыватьРегистр", Ложь);
		//ПараметрыСравнения.Вставить("СпособСравнения", СпособСравненияФайлов.ТекстовыйДокумент);
		
		Утверждения.ПроверитьРавенствоФайлов(ИмяФайлаЭталона, ИмяФайлаРезультатаОтчета,
			"Ожидали, что результат отчета соответствует эталону", ПараметрыСравнения, ПоказатьРазличия);
			
	#КонецЕсли 	
			
КонецПроцедуры
Clone this wiki locally