Пример автотеста

Parent Previous Next

Пример автотеста


После того как плагин был установлен и подключен к проекту рассмотрим простой автотест.


У нас создана простая база данных в MySQL с именем test_db

В этой базе данных одна таблица test_table с полями: id, name, age, post



Теперь опишем простой автотест который будет добавлять, изменять и удалять данные в базе данных при этом проверяя корректность результатов.


Файл: 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;
using HatPluginMySql;

namespace Hat
{
    public class ExampleTest3
    {
        Tester tester;

        public async void Main(Form browserWindow)
        {
            tester = new Tester(browserWindow);

            await setUp();
            await test();
            await tearDown();
        }

        public async Task setUp()
        {
            tester.Description("Тест #3 проверка базы данных");
            await tester.BrowserFullScreenAsync();
        }

        public async Task test()
        {
            DataTable dataTable = null;
            List<List<string>> entries = new List<List<string>>();
            TesterMySql testerMySql = new TesterMySql(tester);
            
            await tester.TestBeginAsync();
            
            await testerMySql.ConnectionOpenAsync("server=127.0.0.1;uid=root;pwd=;database=test_db");
            
            int count = await testerMySql.GetCountEntriesAsync("SELECT * FROM test_table");
            if (count > 0)
            {
                entries = await testerMySql.GetEntriesAsync("SELECT * FROM test_table");
                dataTable = await testerMySql.GetDataTableAsync("SELECT * FROM test_table");
                foreach (DataRow row in dataTable.Rows)
                    foreach (DataColumn col in dataTable.Columns)
                        tester.ConsoleMsg(row[col].ToString());
            }
            
            await testerMySql.SetEntryAsync("INSERT INTO test_table VALUES(NULL, 'I am Tester', 100, 'My post QA')");
            bool result = await testerMySql.FindEntryAsync("test_table", "name", "'I am Tester'");
            await testerMySql.AssertHaveInTableAsync("test_table", "name", "'I am Tester'");
            
            entries = await testerMySql.GetEntriesFromTableAsync("test_table");
            if (entries != null){
                foreach(List<string> entry in entries)
                    foreach(string value in entry)
                        tester.ConsoleMsg(value);
            }
            
            await testerMySql.EditEntryAsync("UPDATE test_table SET age = 111 WHERE name = 'I am Tester'");
            result = await testerMySql.FindEntryAsync("test_table", "age", "111");
            await testerMySql.AssertHaveInTableAsync("test_table", "age", "111");
            
            await testerMySql.RemoveEntryAsync("DELETE FROM test_table WHERE name = 'I am Tester'");
            result = await testerMySql.FindEntryAsync("test_table", "name", "'I am Tester'");
            await testerMySql.AssertDontHaveInTableAsync("test_table", "name", "'I am Tester'");
            
            await testerMySql.ConnectionCloseAsync();
            
            await tester.TestEndAsync();
        }

        public async Task tearDown()
        {
            // await tester.BrowserCloseAsync();
        }
    }
}


Обратите внимание что для корректной работы автотесты необходимо подключить библиотеку


       using HatPluginMySql;


Вначале идет подключение к базе данных


TesterMySql testerMySql = new TesterMySql(tester);

await testerMySql.ConnectionOpenAsync("server=127.0.0.1;uid=root;pwd=;database=test_db");


Используя разные методы производятся манипуляции с данными


await testerMySql.GetCountEntriesAsync("SELECT * FROM test_table");

await testerMySql.GetEntriesAsync("SELECT * FROM test_table");

await testerMySql.GetEntriesFromTableAsync("test_table");

await testerMySql.GetDataTableAsync("SELECT * FROM test_table");

await testerMySql.SetEntryAsync("INSERT INTO test_table VALUES(NULL, 'I am Tester', 100, 'My post QA')");

await testerMySql.FindEntryAsync("test_table", "name", "'I am Tester'");

await testerMySql.EditEntryAsync("UPDATE test_table SET age = 111 WHERE name = 'I am Tester'");

await testerMySql.RemoveEntryAsync("DELETE FROM test_table WHERE name = 'I am Tester'");


Специальные методы для проверки присутствия или отсутствия данных в базе данных


await testerMySql.AssertHaveInTableAsync("test_table", "name", "'I am Tester'");

await testerMySql.AssertDontHaveInTableAsync("test_table", "name", "'I am Tester'")


В конце работа с базой данных завершается закрытием соединения с ней


await testerMySql.ConnectionCloseAsync();


Запустим автотест и посмотрим на ход проверки и результат



Все действия были выполнены, все проверки прошли успешно.


Тест завершился успешно.




Created with the Personal Edition of HelpNDoc: Create iPhone web-based documentation