Группа автотестов

Parent Previous Next

Группа автотестов


Вы можете организовать группу автотестов и запустить их.


Для этого нужно создать папку в которой будут храниться автотесты одной группы (например папка group1)



Далее необходимо описать несколько тестов и поместить их в папку group1.


Обратите внимание: у тестов функция Main должна быть объявлена как Task


первый файл ExampleTest3.cs


Файл: ExampleTest3.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms;

using System.Threading;

using System.Threading.Tasks;

using System.IO;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System.Reflection;

using Newtonsoft.Json;

using HatFramework;


namespace Hat

{

    // Вспомогательный класс для JSON данных

    public class TestJson

    {

        public int userId { get; set; }

        public int id { get; set; }

        public string title { get; set; }

        public string body { get; set; }

    }

    

    public class ExampleTest3

    {

        // Главная переменная для работы автотеста

        Tester tester;


        // Главная входная функция объявлена как Task это важно! (с этой функции начинается работа автотеста)

        public async Task Main(Form browserWindow)

        {

            // Инициализация главной переменной и дополнительных функций

            tester = new Tester(browserWindow);


            await setUp();

            await test();

            await tearDown();

        }


        // Функция начала работы с автотестом

        public async Task setUp()

        {

            await tester.BrowserFullScreenAsync(); // Устанавливает разрешение браузер на весь экран

        }


        // Функция выполнения действий автотеста

        public async Task test()

        {

            await tester.TestBeginAsync();

            await tester.GoToUrlAsync("https://jsonplaceholder.typicode.com", 5);

            string result = await tester.RestGetAsync(@"https://jsonplaceholder.typicode.com/posts/1/", TimeSpan.FromDays(1), "UTF-8");

            TestJson dataJson = JsonConvert.DeserializeObject<TestJson>(result);

            tester.AssertEqualsAsync("1", dataJson.userId.ToString());

            await tester.TestEndAsync();

        }


        // Функция завершения работы с автотестом

        public async Task tearDown()

        {

            // await tester.BrowserCloseAsync(); в данном случае нам не нужно чтобы браузер закрывался

        }

    }

}


и второй файл ExampleTest4.cs


Файл: ExampleTest4.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms;

using System.Threading;

using System.Threading.Tasks;

using System.IO;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System.Reflection;

using Newtonsoft.Json;

using HatFramework;


namespace Hat

{

    public class ExampleTest4

    {

        // Главная переменная для работы автотеста

        Tester tester;


        // Главная входная функция объявлена как Task это важно! (с этой функции начинается работа автотеста)

        public async Task Main(Form browserWindow)

        {

            // Инициализация главной переменной и дополнительных функций

            tester = new Tester(browserWindow);


            await setUp();

            await test();

            await tearDown();

        }


        // Функция начала работы с автотестом

        public async Task setUp()

        {

            await tester.BrowserFullScreenAsync(); // Устанавливает разрешение браузер на весь экран

        }


        // Функция выполнения действий автотеста

        public async Task test()

        {

            await tester.TestBeginAsync();

            await tester.GoToUrlAsync("https://somovstudio.github.io/test.html", 5);

            string script = @"(function(){ var element = document.getElementsByTagName('h2')[0]; return element.outerText; }());";

            string actual = await tester.ExecuteJavaScriptAsync(script);

            string expected = "Авторизация";

            await tester.AssertEqualsAsync(expected, actual);

            await tester.TestEndAsync();

        }


        // Функция завершения работы с автотестом

        public async Task tearDown()

        {

            // await tester.BrowserCloseAsync(); в данном случае нам не нужно чтобы браузер закрывался

        }

    }

}


Мы создали два автотеста "ExampleTest3.cs" и "ExampleTest4.cs" которые расположены в папке "group1".

Теперь нужно создать объединяющий автотест GroupTests1.cs который будет вызывать другие автотесты.


Файл: GroupTests1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms;

using System.Threading;

using System.Threading.Tasks;

using System.IO;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System.Reflection;

using Newtonsoft.Json;

using HatFramework;


namespace Hat

{

    public class GroupTests1

    {

        // Главная переменная для работы автотеста

        Tester tester;

        

        // Главная входная функция (с этой функции начинается работа автотеста)

        public async void Main(Form browserWindow)

        {

            tester = new Tester(browserWindow); // Инициализация главной переменной

            await setUp(); // Функция начала работы с автотестом

            await test1(browserWindow); // Функция вызывающая автотест из скрипта ExampleTest3.cs

            await test2(browserWindow); // Функция вызывающая автотест из скрипта ExampleTest4.cs

            await tearDown(); // Функция завершения работы с автотестом

        }


        public async Task setUp()

        {

            await tester.BrowserFullScreenAsync();

        }


        // Эта Функция запускает автотест из скрипта ExampleTest3.cs

        public async Task test1(Form browserWindow)

        {

            tester.SendMessage("Автотест ExampleTest3", "", "Файл: ExampleTest3.cs", Tester.IMAGE_STATUS_MESSAGE);

            ExampleTest3 exampleTest3 = new ExampleTest3(); // Создается переменная автотеста

            await exampleTest3.Main(browserWindow); // Запускается автотест

        }

        

        // Эта Функция запускает автотест из скрипта ExampleTest4.cs

        public async Task test2(Form browserWindow)

        {

            tester.SendMessage("Автотест ExampleTest4", "", "Файл: ExampleTest4.cs", Tester.IMAGE_STATUS_MESSAGE);

            ExampleTest4 exampleTest4 = new ExampleTest4(); // Создается переменная автотеста

            await exampleTest4.Main(browserWindow); // Запускается автотест

        }

        

        // Функция завершения работы с автотестом

        public async Task tearDown()

        {

            await tester.BrowserCloseAsync(); // Закрывает браузер

        }

    }

}


Как вы видите автотесты ExampleTest3.cs и ExampleTest4.cs будут последовательно вызываться в методах test1 и test2.


Запустите групповой автотест GroupTests1.cs



В результат на вкладке "Тест" будет отражен весь ход последовательного выполнения всех автотестов шаг за шагом.



В случае если какой-то из автотестов будет выполнен неудачно, проверка всё равно продолжится пока не будут пройдены все автотесты



при этом общий результат работы группового автотеста GroupTests1.cs будет считаться провальным.



так же будет создан отчет о полном прохождении всех тестов




Created with the Personal Edition of HelpNDoc: Free help authoring environment