IgorPetrovcm.OzonTestsManager 2.0.0

dotnet add package IgorPetrovcm.OzonTestsManager --version 2.0.0                
NuGet\Install-Package IgorPetrovcm.OzonTestsManager -Version 2.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IgorPetrovcm.OzonTestsManager" Version="2.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add IgorPetrovcm.OzonTestsManager --version 2.0.0                
#r "nuget: IgorPetrovcm.OzonTestsManager, 2.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install IgorPetrovcm.OzonTestsManager as a Cake Addin
#addin nuget:?package=IgorPetrovcm.OzonTestsManager&version=2.0.0

// Install IgorPetrovcm.OzonTestsManager as a Cake Tool
#tool nuget:?package=IgorPetrovcm.OzonTestsManager&version=2.0.0                

OzonTestsManager

Я писал эту библиотеку для себя, так как хотел тестировать свои решения задач от Ozon Techpoint, надеюсь и вам пригодиться, темболее когда на решение всех задач будет всего 5 часов 😅. Если кратко, то все что вам нужно для тестирование: скачать .zip архив с тестами от Ozon с вашей задачей, скопировать путь, и.. Все!

Оглавление

Manual

Данная библиотека предоставляет быстрое тестирование для вашего решения задачи с контекста OzonTech.

Ссылка на nuget-пакет: https://www.nuget.org/packages/IgorPetrovcm.OzonTestsManager

устанавливайте версию библиотеки 2.0.0, только в этой версии есть описанные ниже решения

Ссылка на github:

https://github.com/IgorPetrovcm/OzonTech-TestsManager

С чего начать

Прежде всего нужно скачать .zip архив со страницы вашей задачи, обычно нужно долистать в самый конец страницы:

alternate text is missing from this package README image

Подключите библиотеку с помощью nuget. Далее в проекте вашего решения создайте поток класса OzonTasks и в параметры конструктора вставим путь к архиву, путь должен быть полный:

using (OzonTasks ozonTasks = new OzonTasks(@"C:\..folders..\Downloads\4.zip"))
{

}

При открытии потока в вашем проекте появяться исходники, в папке bin/, а точнее .json-файл под названием "OzonTestsManager_history_status" и папка с тестами, в которую библиотекой был разорхивирован архив по указанному вами пути "Test_Directory". Предназначение .json-файла расскажу потом, это не так важно.

Как тестировать свое решение

В открытом потоке и будет ваше решения. Для работы с каждым заданием из архива вам предоставлен класс OzonCurrentTask, который и хранит строки задания - "тесты", и ответы на них.

Здесь мы получем task из коллекции OzonCurrentTask с помощью итератора GetTasks:

using (OzonTasks ozonTasks = new OzonTasks(@"C:\..folders..\Downloads\4.zip"))
{
    foreach (OzonCurrentTask task in ozonTasks.GetTasks())
    {

    }
}

[Подробнее о свойствах OzonCurrentTask]

Действия дальше могут показаться бессмысленными, но я не смог это сделать короче. Здесь мы получаем каждый тест или строку из задания и уже работаем с ней:

foreach (OzonCurrentTask task in ozonTasks.GetTasks())
{
    foreach (string test in task)
    {
      //ваше решения
    }
}

На практике

Представим такое задание: Дана строка чисел, отсортируйте числа в ней по возрастанию.

На вход получаем:

2 3 9 1 4
9 1
0 9 3 6

На выход должно получиться:

1 2 3 4 9
1 9
0 3 6 9

Вот как это решить и протестировать с помощью библиотеки OzonTestsManager:

// Путь к скачанному архиву с заданиями: C:\Downloads\test.zip

using (OzonTasks tasks = new OzonTasks("C:\\Downloads\\test.zip"))
{
    foreach (OzonCurrentTask task in tasks)
    {
        foreach (string test in task)
        {
            Array.Sort(test.ToArray());

            task.yourResult.Add(test);
        }
    }
}

Просто добавьте ваше решение теста в yourResult для текущего task, и все🎉!

Если у вас не получаеться результат теста в виде строки, например, коллекция int то укажите это в методе Add<T>(IEnumerable yourResult) вашего yourResult:

task.yourResult.Add<int>(myArray)

По итогу

По завершению потока OzonTasks, вызывается его реализация Dispose(), которая сама, любезно выведет в консоль результаты ваших решений.

Пример отчета без ошибок:

alternate text is missing from this package README image

Пример отчета с ошибками в вашем решении:

alternate text is missing from this package README image

Контакты

Telegram: @IGOR_PETR

GitHub: https://github.com/IgorPetrovcm

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 209 2/9/2024
1.0.0 150 2/6/2024

Пользоваться библиотекой стало намного проще, написан класс OzonTasks отвечающий за все и за взаимодействие с разработчиком