Skip to content

Fedoseevv/auto-test-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Библиотека "Автотесты"

Краткое описание:

Данный проект содержит класс, реализующий проверку входных данных на основании предоставленных SQL-запросов и .sql файлов, содержащих данные в формате CSV

Все методы, реализованные в классе, принимают на вход два строковых параметра (пути до SQL-файлов источника (далее source) внутри директории resources и ожидаемого результата (далее target)).

Все данные для тестирования содержатся в директории src/main/resources, названия файлов соответствуют следующему паттерну:
test_< номер теста >_< source|target >_< counts|arrays|ddl|constants >.sql

Кейсы тестирования:

  1. Тестирование количества строк на источнике (в прототипе и витрине). Два sql-запроса должны выдать одинаковый результат
  2. Тестирование по атрибутам n-го количества строк в витрине с результатом прототипа. В этом подходе также два sql-запроса, один к витрине, второй к источнику, они должны выдать одинаковый результат
  3. Тестирование структуры данных. Приложенный DDL должен равняться результату describe витрины
  4. Тестирование данных в витрине/столбце с набором констант. Например, максимальный report_dt должен быть равен какому-то значению

Описание класса:

В классе AutoTest реализованы 4 основных метода тестирования:

  • isEqualCounts - первый кейс тестирования
  • isEqualDF - второй кейс тестирования
  • isEqualSchemas - третий кейс тестирования
  • isCurrentConstants - четвертый кейс тестирования

Дополнительные методы класса

Также класс содержит приватный метод appendTestRes, который используется методами тестирования для формирования отчетности по пройденным тестам. Данный метод записывает в приватное поле класса results названия тестов (номер теста и метод, который использовался при тестировании) и результат тестирования true - тест пройден успешно, в противном случае текстовое сообщение с информацией о том, почему тест завершился неудачно.

В классе реализован метод parseResult, при вызове которого происходит чтение сформированной переменной results, метод выводит название теста и его результат (Success или Сообщение с причиной ошибки), после чего, в случае, если есть хотя бы один неуспешный тест, данный метод "выбрасывает" исключение, название которого содержит результаты всех тестов, а также список "провальных" тестов.

Метод getTestName используется для получения названия теста из пути к файлу. В дальнейшем это имя используется при отображении результатов тестирования.

Также в классе реализован метод readDdlFromResource, который используется в тесте isEqualSchemas для чтения из ресурсов файла, содержащего DDL таблицы в формате csv.

Методы start и startTestingOnCluster используются для автоматического запуска всех тестов, находящихся в директории src/main/resources. Первый метод используется для запуска локально, второй - для запуска в контуре (то есть когда запуск будет из jar файла).

Также дополнительно в классе реализован метод isEqualDataframes, который сравнивает результаты двух sql-запросов на совпадение

!!! ВАЖНО !!!

  • В качестве разделителя для чисел с плавающей точкой необходимо использовать символ .
  • В качестве разделителя для csv-файлов необходимо использовать символ ;
  • В случае, если требуется указать значение null в тесте isEqualConstants, значение необходимо указывать маленькими буквами. Пример строки target-файла, содержащего null значение: 2;2;0;5300;null
  • В source файле теста isEqualSchemas необходимо указывать только два столбца: название атрибута, тип атрибута, комментарий указывать не требуется

Краткий "how to use"

Для использования данного класса необходимо добавить в проект package testClass, содержащий файл AutoTest, после чего импортировать его в основной класс проекта. Далее, необходимо создать экземпляр класса, передав ему в аргументы SparkSession и вызвать метод start, в случае запуска локально, либо startTestingOnCluster, в случае, если в дальнейшем проект будет собран в jar-file и запуск будет производиться на кластере, либо в airflow.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages