Группа автотестов
Вы можете организовать группу автотестов и запустить их.
Для этого нужно создать папку в которой будут храниться автотесты одной группы (например папка 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